Maison  >  Article  >  développement back-end  >  Comment puis-je obtenir des statistiques de couverture pour un package lorsque les tests se trouvent dans un répertoire distinct ?

Comment puis-je obtenir des statistiques de couverture pour un package lorsque les tests se trouvent dans un répertoire distinct ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 03:08:28884parcourir

How Can I Get Coverage Stats for a Package When Tests Are in a Separate Directory?

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!

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