go / expert
Snippet
Globales Test-Lebenszyklus-Management mittels testing.M Setup- und Teardown-Hooks
In Go wird das benutzerdefinierte Setup und Teardown eines gesamten Test-Pakets durch die Funktion TestMain mit dem Parameter *testing.M realisiert. Der Aufruf von m.Run() führt alle Tests des Pakets aus und gibt einen Exit-Code zurück, der an os.Exit übergeben werden muss.
snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package mainimport ("fmt""os""testing")var globalResource stringfunc TestMain(m *testing.M) {globalResource = "initialized_db_connection"code := m.Run()globalResource = ""fmt.Println("Cleaned up global test resources")os.Exit(code)}func TestDatabaseOperation(t *testing.T) {if globalResource == "" {t.Fatal("Global resource was not initialized prior to test execution")}}
Erklärung
1
func TestMain(m *testing.M) {
Definiert den benutzerdefinierten Einstiegspunkt für die Test-Binärdatei des Pakets.
2
code := m.Run()
Startet die Ausführung aller regulären Test*-Funktionen im aktuellen Paket.
3
os.Exit(code)
Beendet den Prozess explizit mit dem von m.Run() gelieferten Statuscode.