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 mainimport "testing"func CalculateDiscount(price int) int {if price > 100 {return price - 20}return price}func TestCalculateDiscount(t *testing.T) {tests := []struct {name stringinput intexpected 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.