Maison > développement back-end > Golang > Comment puis-je tester efficacement les paniques dans les tests unitaires Go ?

Comment puis-je tester efficacement les paniques dans les tests unitaires Go ?

Barbara Streisand
Libérer: 2024-12-02 12:30:15
original
770 Les gens l'ont consulté

How Can I Effectively Test for Panics in Go Unit Tests?

Tests de panique dans Go : un guide pratique

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

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

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!

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