0 Tage Serie
go / intermediate
Snippet

Schreiben wiederverwendbarer Testhilfen mit dem testing.TB-Interface

Das `testing.TB`-Interface wird sowohl von `*testing.T` als auch von `*testing.B` implementiert. Durch die Verwendung von `testing.TB` können Hilfsfunktionen zwischen Unittests und Benchmarks geteilt werden. Der Aufruf von `tb.Helper()` markiert die Funktion als Hilfsfunktion, sodass Fehlerberichte die Zeile des Aufrufers anzeigen.

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
24
package main
import (
"os"
"testing"
)
func createTempFile(tb testing.TB, content string) string {
tb.Helper()
tmpFile, err := os.CreateTemp("", "test_db_*.json")
if err != nil {
tb.Fatalf("failed to create temp file: %v", err)
}
tb.Cleanup(func() {
os.Remove(tmpFile.Name())
})
if _, err := tmpFile.WriteString(content); err != nil {
tb.Fatalf("failed to write test data: %v", err)
}
tmpFile.Close()
return tmpFile.Name()
}
Erklärung
1
func createTempFile(tb testing.TB, content string) string {
Akzeptiert testing.TB, sodass der Helfer sowohl in Tests als auch in Benchmarks verwendet werden kann.
2
tb.Helper()
Markiert diese Funktion als Testhelfer, sodass Fehlerprotokolle die Zeilennummer des Aufrufers melden.
3
tb.Cleanup(func() {
Registriert eine Bereinigungsfunktion, die nach Testende automatisch ausgeführt wird, um Ressourcenlecks zu vermeiden.