Statistiques de couverture pour les tests dans des packages séparés
Lorsque vous séparez les tests des fichiers de code dans différents packages, il devient difficile d'obtenir des statistiques de couverture pour le paquet en cours de test. Considérez la structure de répertoires suivante :
api_client: Client.go ArtistService.go ... api_client_tests: ArtistService.Events_test.go ArtistService.Info_test.go UtilityFunction.go ...
L'exécution de go test bandsintown-api/api_client_tests -cover ne couvre que le fichier UtilityFunction.go, en laissant de côté le package api_client réel.
Solution :
Pour résoudre ce problème, utilisez la commande suivante :
go test -cover -coverpkg "api_client" "api_client_tests"
Cette commande vous permet d'exécuter les tests avec la mesure de couverture activée spécifiquement pour le package api_client.
Remarque sur la structure des packages :
Cependant, il convient de noter que diviser les fichiers de code et les tests dans différents répertoires n'est pas une pratique recommandée dans Go. Au lieu de cela, conserver les tests dans le même package garantit qu'ils sont correctement limités à l'interaction avec l'API publique du package.
Accessibilité du code pour les tests Black-Box :
Si le L'objectif est d'effectuer des tests en boîte noire où les variables et fonctions privées au niveau du package sont inaccessibles aux tests, la solution de contournement suivante peut être utilisée :
<code class="go">// api_client.go package api_client // will not be accessible outside of the package var privateVar = 10 func Method() { } // api_client_test.go package api_client_tests import "testing" import "api_client" // import the package **without** renaming it func TestBlackBox(t *testing.T) { api_client.Method() // call the method from the "api_client" package }</code>
Cela permet aux tests d'accéder aux éléments au niveau du package sans modifier le répertoire. structure ou en violation des règles d'encapsulation.
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!