Maison >développement back-end >Golang >## Comment obtenir une couverture complète des tests fonctionnels : combler le fossé entre le code et l'exécution ?
Comment afficher une couverture complète dans les tests fonctionnels
Problème :
Les tests fonctionnels exécutent une compilation code binaire, laissant de la place aux angles morts découverts.
Extrait de code :
<code class="go">package main import ( "fmt" "math/rand" "os" "time" ) var exitCode int func Test_main(t *testing.T) { go main() exitCode = <p><strong>Solution :</strong></p> <p><strong>1. Exclure la fonction principale à l'aide de balises de construction :</strong></p> <pre class="brush:php;toolbar:false"><code class="go">//+build !test package main func main() { os.Exit(doFunc()); }</code>
Construire avec des balises :
go test -c -coverpkg=. -o example -tags test
2. Extraire la fonctionnalité vers du code testable :
Évitez de tester la fonction principale en extrayant la fonctionnalité dans d'autres classes. Utilisez func TestMain pour contrôler l'exécution du code sur le thread principal.
3. Utilisez Mocking :
Créez des simulations pour les dépendances afin d'isoler des chemins de code spécifiques et d'améliorer la testabilité.
4. Délais d'attente pour la couverture :
Ajoutez un délai d'attente au test pour donner à l'outil de couverture le temps d'écrire le profil avant la fermeture de l'application.
Exemple avec les délais d'attente :
<code class="go">func exit(code int) { exitCh <p><strong>Avantages :</strong></p> <ul> <li>Angles morts découverts dans la couverture des tests fonctionnels</li> <li>Testabilité et maintenabilité améliorées du code de production</li> <li>Confiance dans l'exactitude et l'exhaustivité des rapports de couverture</li> </ul></code>
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!