„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann man die Paniksituation effizient testen?

Wie kann man die Paniksituation effizient testen?

Gepostet am 2025-04-19
Durchsuche:156

How Can I Effectively Test for Panics in Go?

testen für Panik in go

beim Schreiben von Tests in Go, kann die Überprüfung auf Panik eine nützliche Technik sein. Im Gegensatz zu Java hat Go jedoch keine explizite Syntax, um die Panik selektiv umzugehen.

Betrachten Sie das folgende Beispiel:

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

Dieser Code versucht, sich von jeder Panik in anderen Funktionen mit der Wiederherstellungsfunktion von einer anderen Funktionen zu erholen. Es kann jedoch schwierig sein zu bestimmen, ob die Funktion überhaupt in Panik geraten ist oder ob keine Panik aufgetreten ist.

Lösung

Der empfohlene Ansatz besteht darin, sich auf das Testen auf das Fehlen einer Panik zu konzentrieren. Dies kann erreicht werden, indem die Logik invertiert und sicherstellt Defer func () { wenn r: = recover (); r == nil { T.Erorf ("Der Code hat keine Panik") } } ()) // Codes zu Test Andere Funktionsstörungen () () }

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

    // Code under test
    OtherFunctionThatPanics()
}

Expect(OtherFunctionThatPanics).To(Panic())

Expect(OtherFunctionThatPanics).To(Panic())
Utility Functions

For Komfort, Sie können eine generische Funktion zur Behauptung von Panik erstellen:

func assertpanic (t *testing.t, f func ()) { Defer func () { wenn r: = recover (); r == nil { T.Erorf ("Der Code hat keine Panik") } } ()) F() }

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, andere Funktionen, diee Funktionen) }

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3