Couverture des tests pour le code séparé des tests
Malgré l'avantage d'organiser les fichiers de test séparément pour une base de code plus propre et de limiter les tests aux interactions avec l'API publique , cela pose un défi pour obtenir une couverture pour le package cible testé (dans ce cas, api_client).
Pour résoudre ce problème, nous pouvons exploiter l'indicateur -coverpkg ainsi que le nom du package lors de l'exécution des tests :
go test -cover -coverpkg "api_client" "api_client_tests"
Cette commande exécutera les tests avec la couverture activée pour le package api_client.
Bien que la séparation des fichiers de test des fichiers de code soit autorisée, il est important de noter qu'elle s'écarte de l'approche standard de Go. Cela signifie que les variables ou fonctions privées du package ne seront pas accessibles par les tests en dehors du package, même si elles se trouvent dans des répertoires distincts.
Pour appliquer les tests en boîte noire, où les tests ne doivent accéder qu'aux méthodes API publiques, vous pouvez toujours conserver les tests dans des packages séparés sans déplacer physiquement les fichiers. Par exemple :
<code class="go">// api_client.go package api_client // Private variable not accessible outside package var privateVar = 10 func PublicMethod() {}</code>
<code class="go">// api_client_test.go package api_client_tests import ( "testing" "api_client" // Import api_client package ) func TestPublicMethod(t *testing.T) { api_client.PublicMethod() }</code>
Dans cet exemple, les fonctions privateVar et Method d'api_client.go sont inaccessibles au fichier de test, garantissant que les tests interagissent uniquement via l'API publique.
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!