Maison >développement back-end >Golang >Comment puis-je obtenir une couverture complète du code Go sur plusieurs packages ?

Comment puis-je obtenir une couverture complète du code Go sur plusieurs packages ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-10 18:53:10726parcourir

How Can I Get Comprehensive Go Code Coverage Across Multiple Packages?

Obtenir des informations sur la couverture au-delà des limites des packages dans Go

Lorsque vous travaillez avec des projets Go impliquant plusieurs packages, il est crucial de garantir des informations de couverture complètes pour analyse précise du code. Cependant, il n'est pas rare de rencontrer des situations où les rapports de couverture excluent les fonctions résidant dans des packages différents.

Considérons un scénario dans lequel votre projet comprend la structure suivante :

  • app/api/ foo.go : contient une fonction qui appelle une fonction située dans src/db/bar.go.

Lors de l'exécution de l'analyse de couverture, vous remarquerez peut-être que le rapport de couverture ne montre aucune ligne couverte pour bar.go. Cet écart se produit car le mécanisme de couverture par défaut dans Go n'inclut pas les fonctions extérieures au package testé.

Solution : étendre la couverture avec Coverpkg

Pour surmonter cette limitation, Go fournit une solution via l'indicateur -coverpkg. En spécifiant cet indicateur lors de l'analyse de couverture, vous pouvez étendre le calcul de couverture pour inclure des fonctions dans d'autres packages.

La commande de couverture mise à jour devrait ressembler à ceci :

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

Le -coverpkg=. L'indicateur /... indique Go pour calculer la couverture pour tous les packages de votre projet, y compris les appels de fonction entre packages. Par la suite, le rapport de couverture fournira un aperçu de la couverture de foo.go et bar.go.

Cette approche élimine le besoin de tests séparés pour les packages de base de données et d'API, rationalisant le processus de test tout en garantissant une analyse complète de la 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