Maison >développement back-end >Golang >Comment puis-je inclure les appels de colis externes dans mon rapport de couverture Go ?

Comment puis-je inclure les appels de colis externes dans mon rapport de couverture Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-01 10:27:10867parcourir

How Can I Include External Package Calls in My Go Coverage Report?

Inclure les appels de forfait dans la couverture Go

Problème :

Dans un projet Go avec un structure multi-packages, certaines fonctions des packages en dehors du package actuellement testé sont ignorées par le rapport de couverture. Plus précisément, les fonctions de bar.go situées dans le package db n'affichent aucune couverture bien qu'elles soient appelées depuis foo.go dans le package api.

Solution :

Pour Pour résoudre ce problème, l'indicateur -coverpkg doit être ajouté à la commande go test. L'indicateur -coverpkg spécifie les packages à inclure dans le rapport de couverture.

Explication :

Par défaut, le rapport de couverture inclut uniquement les packages directement importés par le test emballer. Dans ce cas, foo_test.go (le package de test pour foo.go) n'importe pas directement la base de données, donc les fonctions de bar.go ne sont pas couvertes.

L'ajout de l'indicateur -coverpkg inclut explicitement les packages spécifiés. dans l’analyse de la couverture. Dans ce cas, la commande suivante inclurait tous les packages du répertoire courant (./...) dans le rapport de couverture :

go test -coverpkg=./... coverprofile=coverage.out ./...

Cela générera un rapport de couverture qui inclut l'appel de fonction à bar. allez depuis foo.go.

Remarque :

L'utilisation de l'indicateur -coverpkg peut avoir un impact sur le temps d'exécution du test, car elle nécessite l'analyse d'un un plus grand nombre de colis. Cependant, il est nécessaire d'obtenir des informations de couverture précises pour les appels de fonctions inter-packages.

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