Ich überlege gerade, wie ich Tests schreiben soll, die prüfen, ob ein bestimmter Code in Panik gerät. Ich weiß, dass Go recover
Panik auslöst, aber im Gegensatz zu Java-Code können Sie nicht genau angeben, welcher Code im Falle einer Panik übersprungen werden soll oder was Sie haben. Also, wenn ich eine Funktion habe:
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")
}
Ich kann nicht wirklich sagen, ob OtherFunctionThatPanics
wir in Panik geraten sind und uns erholt haben oder ob die Funktion überhaupt nicht in Panik geraten ist. Wie gebe ich an, welcher Code übersprungen werden soll, wenn keine Panik vorliegt, und welcher Code ausgeführt werden soll, wenn eine Panik auftritt? Wie kann ich überprüfen, ob es eine Panik gab, von der wir uns erholt haben?