Maison > Article > développement back-end > Analyse des échecs de test et méthodes de débogage dans Golang
Méthodes d'analyse des échecs de test et de débogage dans Golang
Introduction :
Dans le processus de développement logiciel, les tests sont un maillon indispensable. Grâce aux tests, nous pouvons vérifier si le code que nous avons écrit répond aux attentes et s'il contient des erreurs. Cependant, nos tests échouent parfois et nous devons à ce stade analyser et déboguer pour découvrir la cause de l'erreur. Cet article présentera les méthodes courantes d'analyse des échecs de test et de débogage dans Golang, et donnera des exemples de code correspondants.
1. Analyse des erreurs
Lorsque notre test échoue, nous devons d'abord déterminer la raison de l'échec du test. Le cadre de test de Golang fournit des résultats riches pour nous aider à analyser les raisons de l'échec. Nous pouvons exécuter la commande suivante dans le répertoire où se trouve le fichier de test :
go test -run TestFunc -v
Parmi elles, TestFunc est le nom de la fonction de test, et -v signifie afficher des informations plus détaillées.
Ci-dessous, nous présenterons les causes courantes d'échec et leurs méthodes d'analyse.
Par exemple, nous avons la fonction de test suivante :
func TestAdd(t *testing.T) { result := Add(2, 3) expected := 5 if result != expected { t.Errorf("Add(2, 3) = %d; expected %d", result, expected) } }
Lorsque le test est exécuté, si le résultat réel n'est pas égal au résultat attendu, le résultat sera similaire à :
--- FAIL: TestAdd (0.00s) main_test.go:10: Add(2, 3) = 6; expected 5
Grâce à la sortie, nous pouvons clairement voyez que le résultat réel est 6 et que le résultat attendu est 5 ; de cette façon, nous pouvons facilement trouver le problème.
Tout d'abord, nous pouvons déterminer le point de sortie anormal et la relation d'appel du programme en imprimant les informations sur la pile. Par exemple, nous avons la fonction de test suivante :
func TestDivide(t *testing.T) { result := Divide(10, 0) t.Log(result) }
Lorsque la fonction testée Divide(10, 0) est appelée, si le diviseur est 0, une exception panique sera déclenchée. Le framework de test Golang imprimera les informations d'exception comme suit :
--- FAIL: TestDivide (0.00s) main_test.go:10: runtime error: integer divide by zero
Grâce aux informations de sortie ci-dessus, nous pouvons voir qu'une erreur de division entière par zéro s'est produite lorsque la fonction de test a exécuté Divide(10, 0).
Afin de mieux analyser le problème, nous pouvons utiliser la récupération dans la fonction de test pour capturer la panique et la générer dans le fichier journal spécifié ou dans la sortie standard via le package de journaux de la bibliothèque standard.
func TestDivide(t *testing.T) { defer func() { if err := recover(); err != nil { t.Errorf("TestDivide failed: %v", err) // 或者使用 log.Fatal(err)将错误输出到标准错误流 } }() result := Divide(10, 0) t.Log(result) }
De cette façon, même si la fonction testée panique, nous pouvons capturer l'exception et afficher les informations d'erreur pertinentes.
2. Analyse de débogage
Lorsque nous trouvons la raison de l'échec du test, nous devons parfois déboguer pour découvrir l'erreur spécifique. Voici plusieurs méthodes de débogage.
func TestAdd(t *testing.T) { result := Add(2, 3) fmt.Println(result) expected := 5 if result != expected { t.Errorf("Add(2, 3) = %d; expected %d", result, expected) } }
En affichant les résultats, nous pouvons constater que la valeur du résultat n'est pas celle de 5 à laquelle nous nous attendions, le problème peut donc résider dans la fonction Ajouter.
Tout d'abord, dans la zone de code qui doit être déboguée, nous pouvons insérer un point d'arrêt devant la ligne clé. On démarre ensuite le débogueur en exécutant la commande suivante dans le terminal :
dlv test -- -test.run TestFunc
Où TestFunc est le nom de la fonction de test que l'on souhaite déboguer.
Après le démarrage du débogueur, nous pouvons saisir l'emplacement du point d'arrêt via des opérations de ligne de commande, afficher les valeurs des variables et exécuter le code étape par étape. Cela nous aide à identifier le problème.
Conclusion :
L'introduction de cet article aux méthodes d'analyse des échecs de test et de débogage dans Golang peut aider les développeurs à mieux comprendre et utiliser le cadre de test Golang pour les tests et le débogage.
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!