go / intermediate
Snippet
Implementierung von tabellengesteuerten Tests
Tabellengesteuertes Testen ist ein Go-Idiom, bei dem Testfälle als Slice anonymer Structs definiert werden. Dies erleichtert das Hinzufügen neuer Szenarien und sorgt für eine konsistente Testlogik.
snippet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func TestAdd(t *testing.T) {tests := []struct {a, b, want int}{{1, 2, 3},{0, 0, 0},{-1, 1, 0},}for _, tt := range tests {got := Add(tt.a, tt.b)if got != tt.want {t.Errorf("Add(%d, %d) = %d; want %d", tt.a, tt.b, got, tt.want)}}}
Erklärung
1
struct { a, b, want int }
Definiert die Struktur für Eingabeparameter und das erwartete Ergebnis.
2
range tests
Iteriert durch jeden definierten Testfall in der Tabelle.
3
t.Errorf(...)
Meldet einen Fehler, erlaubt dem Loop aber, mit anderen Testfällen fortzufahren.