Tabellengesteuerte Tests
Parametrisierte Tests mit Subtests
Tabellengesteuerte Tests ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was sind tabellengesteuerte Tests
Bei tabellengesteuerten Tests wird ein Slice mit Testfällen (Eingaben und erwarteten Ausgaben) definiert und mit einem einzigen Testkörper durchlaufen. Dadurch vermeiden Sie Duplikate, und neue Fälle lassen sich problemlos hinzufügen.
Grundmuster
Definieren Sie für jeden Fall eine Struct, durchlaufen Sie die Fälle mit t.Run und melden Sie Fehler mit dem Namen des Falls:
tests := []struct {
name string
input int
want int
}{
{"zero", 0, 0},
{"positive", 3, 9},
{"negative", -2, 4},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Square(tt.input)
if got != tt.want {
t.Errorf("Square(%d) = %d; want %d", tt.input, got, tt.want)
}
})
}Slice anonymer Structs
Verwenden Sie für den Testfalltyp eine anonyme Struct. So bleibt die Definition des Falls nahe am Test, und Sie müssen keinen Typ benennen, der nur einmal verwendet wird.
Fehlerfälle einbeziehen
Fügen Sie ein Feld wantErr bool hinzu, um zu testen, ob Funktionen in den erwarteten Situationen Fehler zurückgeben:
{"invalid input", -1, 0, true},
// in the loop:
if (err != nil) != tt.wantErr {
t.Errorf("wantErr %v, got err %v", tt.wantErr, err)
}Subtests benennen
Ein aussagekräftiges Namensfeld macht Fehler selbsterklärend. Einen bestimmten Fall können Sie mit -run TestFunc/case_name ausführen.
Parallele Subtests mit t.Run
Markieren Sie jeden Subtest als parallel und übernehmen Sie die Schleifenvariable, um Fälle gleichzeitig auszuführen (wichtig, wenn Tests I/O-gebunden sind).
for _, tt := range tests {
tt := tt // capture
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
// ...
})
}Gemeinsames Setup pro Fall
Verwenden Sie tt.setup-Funktionsfelder, um ein Setup pro Fall zu ermöglichen, ohne Boilerplate zu duplizieren:
type tc struct {
setup func() *DB
input string
want int
}Testfälle übersichtlich halten
Wenn die Fälle umfangreich werden, definieren Sie sie als benannte Variablen oder laden Sie sie aus Testdata-Dateien. Halten Sie die Tabelle kompakt – möglichst mit einer Zeile pro Fall.
Mehrere Ausgaben testen
Testen Sie Funktionen, die mehrere Werte zurückgeben, indem Sie ein Feld pro Ausgabe hinzufügen:
type tc struct {
input string
wantVal int
wantErr bool
}Testify-assert in Tabellen
Verwenden Sie github.com/stretchr/testify/assert in tabellengesteuerten Tests für gut lesbare Assertions, ohne ausführliche if/t.Errorf-Blöcke.
assert.Equal(t, tt.want, got, tt.name)Dokumentation durch Testfälle
Die Tabelle der Testfälle dient als lebende Dokumentation. Zukünftige Entwickler können auf einen Blick erkennen, welche Eingaben und Randfälle unterstützt werden.
Kurzer Test
Warum übernehmen Sie die Schleifenvariable (tt := tt), bevor Sie t.Parallel in tabellengesteuerten Tests aufrufen?
Zusammenfassung: Tabellengesteuerte Tests
Wichtige Punkte:
- Slice aus Structs mit Eingaben, erwarteten Ausgaben und Fehlerflag
- Durchlaufen Sie die Fälle mit t.Run für benannte, unabhängige Subtests
- Übernehmen Sie die Schleifenvariable (tt := tt), bevor Sie t.Parallel aufrufen
- Die Fälle dienen als lebende Dokumentation der unterstützten Verhaltensweisen
Häufig gestellte Fragen
Ist die Lektion „Tabellengesteuerte Tests“ kostenlos?
Ja — der vollständige Text von „Tabellengesteuerte Tests“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Tabellengesteuerte Tests“?
Parametrisierte Tests mit Subtests Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Tabellengesteuerte Tests“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Unit-Tests mit testing schreiben
- Tabellengesteuerte Tests
- Test-Doubles: Mocks und Stubs
- Testabdeckung und testify