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 mainimport ("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.