Tests Go avec la librairie gt

VérifiéSûr

Fournit des instructions pas à pas pour écrire des tests Go avec la bibliothèque gt, notamment les assertions typées (par ex. `gt.Array`, `gt.String`), les motifs d'arrêt précoce avec `Required()`, et la gestion des valeurs de retour avec `R1`/`R2`/`R3`. Utile lors de la création de nouveaux fichiers de test ou de l'ajout de tests à du code Go existant en consultant la documentation locale de gt.

Spar Skills Guide Bot
TestingIntermédiaire
17002/06/2026
Claude Code
#go#testing#gt-library#assertions#unit-testing

Recommandé pour

Notre avis

Écrire des tests Go avec la bibliothèque gt pour des assertions typées et sûres.

Points forts

  • Assertions typées pour les slices, strings, erreurs, etc.
  • Fail-fast avec Required() pour arrêter immédiatement en cas d'échec
  • Contexte avec Describef() pour des messages d'erreur clairs
  • Gestion simplifiée des retours de fonction avec R1/R2/R3

Limites

  • Nécessite que la bibliothèque gt soit installée localement
  • Ne couvre pas tous les cas d'usage possibles
  • Peut être excessif pour des tests très simples où le package testing standard suffit
Quand l'utiliser

Lorsque vous écrivez des tests Go et souhaitez des assertions typées, lisibles et avec arrêt rapide en cas d'erreur.

Quand l'éviter

Si la bibliothèque gt n'est pas disponible ou si les tests sont triviaux et ne nécessitent pas d'assertions complexes.

Analyse de sécurité

Sûr
Score qualité92/100

The skill uses only safe Bash commands (go list and file reads) restricted to the 'go' command scope. There are no destructive, exfiltration, or obfuscation operations.

Aucun point d'attention détecté

Exemples

Test array length with gt
Write a Go test for the function GetUsers that returns a slice of users. Use gt.Array to assert the length is 3.
Test string content with gt
Add a test for ParseMessage that checks the returned string contains 'hello' using gt.String.
Test error handling with Required()
Write a test for OpenFile that uses gt.NoError with Required() to fail fast if an error occurs.

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