Code de test réutilisable dans les packages importés
Dans le scénario fourni, vous disposez d'un fichier de test (main_test.go) qui nécessite l'accès à un fonction de test uniquement dans un autre package (pkg1_test.go). Cela pose le défi de réutiliser le code de test dans les packages importés.
Solutions possibles et leurs inconvénients :
-
Déplacer les fonctions vers pkg1.go : Cela rend les fonctions disponibles pour main_test.go mais elles peuvent faire partie du binaire, qui est indésirable.
-
Utilisez un package testutility distinct : Bien que cela vous permette de regrouper des fonctions de test uniquement, cela introduit la dépendance aux méthodes internes dans pkg1, créant des problèmes potentiels.
Solution recommandée :
Au lieu d'utiliser l'une des méthodes ci-dessus, envisagez l'approche suivante :
-
Créez un package de support : Déplacez les fonctions de test uniquement vers un nouveau package, appelé support. Ce package ne doit s'appuyer que sur les interfaces publiques de pkg1.
-
Utilisez un fichier de support : Dans le support, définissez un fichier de support qui contient la sortie de la fonction privée de pkg1.
-
Charger le fichier de support dans la fonction de support : Dans le package de support, créez une fonction qui charge le fichier de support et effectue les tâches nécessaires opérations.
- **Appelez la fonction de support depuis main_test.go :** Importez le package de support dans main_test.go et appelez la fonction qui utilise la fonction privée de pkg1`.
Cette solution :
- Maintient le code de test uniquement séparé du code de production.
- Garantit que la fonction interne de pkg1 reste privé.
- Évite les problèmes de distribution binaire.
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!