Maison >développement back-end >Golang >Comment puis-je tester efficacement les paniques dans les tests unitaires Go ?
Lors de l'écriture de tests unitaires dans Go, il est souvent nécessaire de vérifier qu'un chemin de code spécifique déclenche une panique. Bien que Go fournisse un mécanisme appelé recovery pour gérer les paniques, il n'offre pas de support direct pour spécifier comment ignorer ou exécuter du code spécifiquement en cas de panique.
Pour surmonter cette limitation, nous pouvons utiliser la subtilité que les tests ne définissent pas le concept de réussite, mais seulement d'échec. En profitant de cela, nous pouvons structurer nos tests comme suit :
func TestPanic(t *testing.T) { defer func() { if r := recover(); r == nil { t.Errorf("The code did not panic") } }() // The following is the code under test OtherFunctionThatPanics() }
Dans cet exemple, si OtherFunctionThatPanics ne panique pas, la fonction de récupération retournera nil et le test échouera à cause de l'appel à t.Errorf. Si une panique se produit, la récupération la capturera et le test réussira.
Alternativement, nous pouvons créer une fonction d'assistance pour faire abstraction de la logique de vérification de panique :
func assertPanic(t *testing.T, f func()) { defer func() { if r := recover(); r == nil { t.Errorf("The code did not panic") } }() f() } func TestPanic(t *testing.T) { assertPanic(t, OtherFunctionThatPanics) }
Ceci Cette approche fournit un moyen concis et réutilisable de gérer les tests de panique dans Go.
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!