0 Tage Serie
go / intermediate
Snippet

Schreiben von parallelen tabellengesteuerten Tests in Go

Tabellengesteuerte Tests in Go isolieren Testeingaben und erwartete Ausgaben in einer klaren Struktur. Das Hinzufügen von t.Parallel() innerhalb der dynamisch ausgeführten t.Run-Untertests ermöglicht es dem Test-Runner von Go, diese parallel auszuführen, was die Ausführungsgeschwindigkeit optimiert.

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
25
26
27
28
29
30
31
package main
import "testing"
func CalculateDiscount(price int) int {
if price > 100 {
return price - 20
}
return price
}
func TestCalculateDiscount(t *testing.T) {
tests := []struct {
name string
input int
expected int
}{
{"No discount for low price", 50, 50},
{"Apply discount for high price", 150, 130},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
got := CalculateDiscount(tc.input)
if got != tc.expected {
t.Errorf("got %d, want %d", got, tc.expected)
}
})
}
}
Erklärung
1
tests := []struct {
Definiert einen Slice anonymer Structs, die die Testfälle repräsentieren.
2
t.Run(tc.name, func(t *testing.T) {
Führt einen Untertest für jeden Testfall aus und benennt diesen dynamisch.
3
t.Parallel()
Signalisiert, dass dieser Untertest parallel zu anderen parallelen Tests ausgeführt werden kann.