Maison > développement back-end > Golang > Comment obtenir une couverture de test pour le code séparé des tests en Go ?

Comment obtenir une couverture de test pour le code séparé des tests en Go ?

Mary-Kate Olsen
Libérer: 2024-10-29 20:56:29
original
448 Les gens l'ont consulté

How to Achieve Test Coverage for Code Separated from Tests in Go?

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"
Copier après la connexion

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>
Copier après la connexion
<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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal