Maison >développement back-end >Golang >Pourquoi la couverture de mon code Go affiche-t-elle 0 % malgré l'exécution réussie des tests dans des dossiers séparés ?

Pourquoi la couverture de mon code Go affiche-t-elle 0 % malgré l'exécution réussie des tests dans des dossiers séparés ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-28 10:59:11825parcourir

Why Is My Go Code Coverage Showing 0% Despite Successful Test Execution in Separate Folders?

Résolution des écarts de couverture de code dans des dossiers séparés pour les projets GO

Lorsque vous travailliez sur un projet avec une structure particulière, où les packages et leurs tests étaient situés dans des dossiers séparés, vous avez rencontré un problème. Malgré l'exécution du code dans stuff.go à partir de stuff_test.go, le rapport de couverture affichait 0,0 %.

Cause possible et solution

Le problème survient en raison de la valeur par défaut de GO comportement d’analyse de couverture, qui s’applique uniquement au package testé. Pour surmonter ce problème, l'indicateur -coverpkg peut être utilisé pour spécifier les packages pour lesquels les données de couverture doivent être collectées.

En utilisant l'option -coverpkg, vous pouvez spécifier que les tests dans test/stuff/stuff_test.go doivent pensez également à la couverture du code pour stuff/stuff.go. Cela garantit que l'analyse de couverture englobe tous les packages pertinents.

Voici un exemple de commande qui démontre l'utilisation de -coverpkg :

go test ./test/... -coverpkg ./...

Cette commande exécute des tests dans des packages correspondant au chemin de test et inclut informations sur la couverture pour tous les forfaits correspondant à ./....

Affichage de la couverture Rapport

Une fois les tests exécutés, vous pouvez générer et visualiser le rapport de couverture à l'aide des commandes suivantes :

go tool cover -html=cover.out

Cette commande génère un rapport de couverture HTML nommé cover.out, qui peut être ouvert dans un navigateur Web pour visualiser les données de couverture.

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