Maison >développement back-end >Golang >Comment réutiliser le code de test des packages importés dans Go avec des fonctions non exportées ?

Comment réutiliser le code de test des packages importés dans Go avec des fonctions non exportées ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 03:48:29884parcourir

How to Reuse Test Code from Imported Packages in Go with Unexported Functions?

Réutilisation du code de test dans les packages importés dans Go

Dans votre structure de répertoires, vous disposez d'une fonction utilitaire de test dans pkg1_test.go que vous souhaitez à utiliser dans main_test.go, qui importe pkg1. Cependant, la fonction dans pkg1_test.go utilise une fonction non exportée dans pkg1, la rendant indisponible en dehors du package.

Considérez les approches suivantes :

Déplacer la fonction vers pkg1.go

Bien que déplacer la fonction vers pkg1.go la rendrait accessible dans main_test.go, cela pourrait conduire à ce que la fonction soit incluse dans le binaire généré par go build. Ceci n'est pas souhaitable pour les fonctions de test uniquement.

Création d'un package d'utilitaires de test distinct

Déplacement de la fonction vers un package d'utilitaires de test distinct et importation manuelle dans *_test. go files semble idéal. Cependant, la fonction nécessite toujours l'accès aux méthodes internes du pkg1, qui ne peuvent pas être exportées.

Une approche hybride

Pour votre scénario spécifique, une approche hybride offre un solution :

  1. Déplacez la fonction utilitaire de test de pkg1_test.go vers un nouveau package, appelons-le testutils.
  2. Importez testutils dans main_test.go et pkg1_test.go.
  3. Dans pkg1_test.go, ajoutez une fonction comme celle-ci :

    <code class="go">func getPrivateData() []byte {
        // Code to get internal data from pkg1
    }</code>
  4. Dans testutils, chargez les données privées de getPrivateData dans pkg1_test.go et utilisez-les pour effectuer les tâches nécessaires tests.

Cette approche vous permet de réutiliser votre fonction utilitaire de test tout en la gardant séparée du code de production et en évitant le problème des fonctions non exportées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn