0Pricing
Go Academy · Lektion

Unit-Tests mit testing schreiben

TestXxx-Funktionen, t.Error, t.Fatal und t.Helper

Unit-Tests mit testing schreiben ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

testing-Paket

Das integrierte Go-Paket testing bietet alles, was Sie für Unit-Tests benötigen: Testfunktionen, Fehlermeldungen und Test-Binaries. Ein externes Framework ist nicht erforderlich.

Signatur einer Testfunktion

Testfunktionen müssen mit Test beginnen, *testing.T als Parameter verwenden und in Dateien mit der Endung _test.go stehen.

func TestAdd(t *testing.T) {
    got := Add(2, 3)
    if got != 5 {
        t.Errorf("Add(2,3) = %d; want 5", got)
    }
}

t.Error und t.Fatal

t.Error markiert den Test als fehlgeschlagen und setzt ihn fort; t.Fatal markiert ihn als fehlgeschlagen und beendet den aktuellen Test sofort. Verwenden Sie Fatal, wenn nachfolgende Assertions vom fehlgeschlagenen Testschritt abhängen.

Tests ausführen

Alle Tests ausführen: go test ./.... Einen bestimmten Test ausführen: go test -run TestAdd. Fügen Sie -v für eine ausführliche Ausgabe hinzu.

go test -v -run TestAdd ./...

t.Helper

Markieren Sie Assertion-Hilfsfunktionen mit t.Helper(), damit Fehlermeldungen die Zeile des Aufrufers und nicht die Zeile der Hilfsfunktion angeben.

func assertEqual(t *testing.T, got, want int) {
    t.Helper()
    if got != want {
        t.Errorf("got %d; want %d", got, want)
    }
}

TestMain

TestMain(m *testing.M) ist ein optionaler Einstiegspunkt für Setup und Teardown vor und nach der gesamten Testsuite (z. B. zum Starten einer Testdatenbank).

func TestMain(m *testing.M) {
    setup()
    code := m.Run()
    teardown()
    os.Exit(code)
}

Subtests mit t.Run

Gruppieren Sie zusammengehörige Fälle mit t.Run. Jeder Subtest wird unabhängig ausgeführt und kann mit -run TestFoo/SubcaseName gezielt ausgewählt werden.

func TestMath(t *testing.T) {
    t.Run("addition", func(t *testing.T) { /* ... */ })
    t.Run("subtraction", func(t *testing.T) { /* ... */ })
}

Struktur von Testdateien

Tests im selben Paket können auf nicht exportierte Bezeichner zugreifen. Tests in einem _test-Paket (Black-Box-Tests) können nur auf exportierte Bezeichner zugreifen.

// white-box: package mylib
// black-box: package mylib_test

go test -cover

Messen Sie die Codeabdeckung mit go test -cover. Für einen detaillierten HTML-Bericht: go test -coverprofile=c.out ./... && go tool cover -html=c.out.

Testen mit Interfaces

Entwerfen Sie Ihren Code anhand von Interfaces, damit Tests Fake-Implementierungen übergeben können, ohne echte Services zu starten.

t.Parallel

Rufen Sie t.Parallel() am Anfang eines Tests auf, um ihn als sicher für die gleichzeitige Ausführung mit anderen parallelen Tests zu markieren und die Testsuite zu beschleunigen.

func TestRead(t *testing.T) {
    t.Parallel()
    // ...
}

Kurzer Test

Was ist der Unterschied zwischen t.Error und t.Fatal?

Zusammenfassung: Unit-Tests mit testing

Wichtige Punkte:

  • Testfunktionen: TestXxx(t *testing.T) in _test.go-Dateien
  • t.Error setzt den Test fort; t.Fatal beendet ihn
  • t.Helper() sorgt für übersichtliche Zeilennummern in Fehlermeldungen von Hilfsfunktionen
  • t.Run für Subtests; t.Parallel für nebenläufige Tests

Häufig gestellte Fragen

Ist die Lektion „Unit-Tests mit testing schreiben“ kostenlos?

Ja — der vollständige Text von „Unit-Tests mit testing schreiben“ 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 „Unit-Tests mit testing schreiben“?

TestXxx-Funktionen, t.Error, t.Fatal und t.Helper 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 1 von 4.

Wie lange dauert die Lektion „Unit-Tests mit testing schreiben“?

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

  1. Unit-Tests mit testing schreiben
  2. Tabellengesteuerte Tests
  3. Test-Doubles: Mocks und Stubs
  4. Testabdeckung und testify
← Zurück zu Go Academy