Tests Go avec la bibliothèque gt

Écrire du code de test Go type-safe en utilisant la bibliothèque gt. Idéal pour créer des fichiers de test et ajouter des assertions robustes.

Spar Skills Guide Bot
TestingIntermédiaire1 vues0 installations28/02/2026
Claude CodeCursorWindsurfCopilot
go-testingassertionsgt-librarytype-safetytest-patterns

name: test-with-gt description: Write Go test code using the gt library. Use when writing tests, creating test files, or when the user asks to add tests for Go code. allowed-tools: Read, Bash(go:*)

Writing Tests with gt

When writing Go test code, use the gt library for type-safe assertions.

Step 1: Locate gt documentation

First, find where gt is installed and read its documentation:

GT_DIR=$(go list -m -f '{{.Dir}}' github.com/m-mizutani/gt 2>/dev/null)

If gt is available, read the relevant documentation from $GT_DIR/docs/:

  • docs/README.md - Overview and quick reference
  • docs/types/*.md - Detailed documentation for each test type
  • docs/patterns/*.md - Common patterns (method chaining, Required, Describe)

Step 2: Choose the right test type

| Data Type | Use | NOT | |-----------|-----|-----| | []T (slice) | gt.Array(t, arr).Length(3) | gt.Value(t, len(arr)).Equal(3) | | string | gt.String(t, s).Contains("x") | gt.Bool(t, strings.Contains(s, "x")).True() | | error | gt.NoError(t, err) | gt.Value(t, err).Nil() | | int, float, etc. | gt.Number(t, n).Greater(5) | gt.Bool(t, n > 5).True() | | map[K]V | gt.Map(t, m).HasKey("k") | manual check with gt.Bool | | bool | gt.Bool(t, b).True() | gt.Value(t, b).Equal(true) |

Step 3: Apply common patterns

Use Required() for fail-fast

gt.NoError(t, err).Required()  // Stop immediately if error
gt.Value(t, result).NotNil().Required()  // Stop if nil

Use Describef() for context

gt.Array(t, users).
    Describef("Users for tenant %s", tenantID).
    Length(5)

Handle function returns with R1/R2/R3

result := gt.R1(parseJSON(input)).NoError(t)
gt.String(t, result.Name).Equal("Alice")

Quick Reference

Constructors: gt.Value, gt.Array, gt.Map, gt.Number, gt.String, gt.Bool, gt.Error, gt.NoError, gt.File, gt.Cast, gt.R1/R2/R3

Short aliases: gt.V, gt.A, gt.M, gt.N, gt.S, gt.B, gt.F, gt.C

Skills similaires