0 Tage Serie
go / intermediate
Snippet

Registrieren von verzögerten Bereinigungen in Unit-Tests mit der Cleanup-Methode

Im Gegensatz zu defer-Anweisungen, die am Ende des aktuellen Blocks ausgeführt werden, registriert `t.Cleanup` Funktionen zur Bereinigung, die erst nach Beendigung des Tests (und aller Subtests) laufen. Dies ist besonders nützlich für Testhelfer, da der Setup-Code nicht denselben Gültigkeitsbereich wie der Testrunner teilt.

snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main
import (
"fmt"
"testing"
)
func TestDatabaseConnection(t *testing.T) {
dbName := "test_db"
t.Cleanup(func() {
fmt.Printf("Cleaning up database: %s\n", dbName)
})
fmt.Println("Database setup complete.")
}
Erklärung
1
t.Cleanup(func() {
Registriert eine Funktion, die nach Beendigung des Tests automatisch ausgeführt wird.
2
fmt.Printf("Cleaning up database: %s\n", dbName)
Die Bereinigungslogik, die garantiert ausgeführt wird, selbst wenn der Test fehlschlägt oder vorzeitig abbricht.