Maison > développement back-end > Golang > le corps du texte

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

Patricia Arquette
Libérer: 2024-11-04 03:48:29
original
806 Les gens l'ont consulté

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>
    Copier après la connexion
  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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!