Maison >développement back-end >Golang >Comment puis-je tester efficacement le comportement de panique en Go ?

Comment puis-je tester efficacement le comportement de panique en Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-24 04:05:13265parcourir

How Can I Effectively Test Panic Behavior in Go?

Test du comportement de panique dans Go

Lors de la création de tests pour vérifier la gestion de la panique, il peut être difficile de déterminer si une panique s'est produite avec succès ou si la fonction testée n'a pas du tout paniqué. La fonction de récupération de Go permet d'attraper les paniques, mais il lui manque la possibilité de spécifier le code qui doit être exécuté en fonction de la présence ou de l'absence de la panique.

Approche de test traditionnelle

Une L'approche courante consiste à utiliser l'instruction defer pour enregistrer une fonction de récupération qui vérifie la présence d'une panique :

func TestPanic(t *testing.T) {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in f", r)
        }
    }()
    OtherFunctionThatPanics()
    t.Errorf("The code did not panic")
}

Cette approche, cependant, ne ne fait pas explicitement la différence entre une panique réussie et aucune panique.

Utiliser Ginkgo ou Gomega

Pour des tests plus robustes, envisagez d'utiliser des bibliothèques comme Ginkgo ou Gomega. Gomega fournit des matchers tels que :

Expect(OtherFunctionThatPanics).To(Panic())

Ce matcher affirme explicitement que la fonction testée devrait paniquer.

Fonction personnalisée pour les assertions de panique

Vous pouvez également créer une fonction personnalisée pour simplifier la vérification de panique :

func TestPanic(t *testing.T) {
    assertPanic(t, OtherFunctionThatPanics)
}

func assertPanic(t *testing.T, f func()) {
    defer func() {
        if r := recover(); r == nil {
            t.Errorf("The code did not panic")
        }
    }()
    f()
}

Cette fonction enveloppe la fonction de récupération et fournit une indication claire si une panique s'est produite ou non.

En utilisant ces approches, vous pouvez tester efficacement le comportement de panique dans votre code Go, en garantissant que le comportement souhaité est atteint lorsque des erreurs se produisent lors de l'exécution.

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!

Déclaration:
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