0Pricing
Go Academy · Leçon

Couverture des essais et testify

go test -cover et la bibliothèque d’assertions testify

Couverture des essais et testify est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

go test -cover

Ajoutez -cover à n’importe quelle commande go test pour afficher le pourcentage de couverture de chaque package.

go test -cover ./...
// ok  myapp 68.4% of statements

Profil de couverture

Générez un fichier de profil de couverture et affichez-le au format HTML pour voir quelles lignes sont couvertes :

go test -coverprofile=c.out ./...
go tool cover -html=c.out -o coverage.html

Seuils de couverture dans l’intégration continue

Imposez une couverture minimale avec une commande shell sur une seule ligne :

pct=$(go test -cover ./... | awk '/coverage/ {gsub(/%/,""); print $NF}')
[ "${pct%.*}" -ge 80 ] || { echo "Coverage $pct% below 80%"; exit 1; }

Une couverture à 100 % n’est pas l’objectif

La couverture mesure les lignes exécutées, et non la pertinence des assertions. Visez une couverture élevée sur les chemins critiques ; acceptez une couverture moindre sur les branches d’erreur inaccessibles.

testify/assert

github.com/stretchr/testify/assert fournit des assertions lisibles qui signalent automatiquement les valeurs attendues et obtenues :

assert.Equal(t, 42, result)
assert.NoError(t, err)
assert.Contains(t, list, "item")
assert.True(t, isValid)

testify/require

require est identique à assert, mais appelle t.FailNow() en cas d’échec, ce qui arrête immédiatement l’essai (comme t.Fatal).

require.NoError(t, err) // stop if err != nil
// Subsequent code only runs if err is nil

testify/suite

testify/suite regroupe les essais associés dans une structure avec une préparation et un nettoyage partagés, à la manière des suites d’essais xUnit :

type UserSuite struct { suite.Suite; db *DB }
func (s *UserSuite) SetupTest() { s.db = openTestDB() }
func (s *UserSuite) TestCreate() { /* ... */ }
func TestUserSuite(t *testing.T) { suite.Run(t, new(UserSuite)) }

assert.ElementsMatch

Comparez des tranches sans tenir compte de l’ordre :

assert.ElementsMatch(t, []int{3,1,2}, []int{1,2,3})

assert.JSONEq

Comparez des chaînes JSON quel que soit l’ordre des clés :

assert.JSONEq(t, `{"a":1,"b":2}`, `{"b":2,"a":1}`)

Assertions personnalisées

Enveloppez testify dans vos propres assistants d’assertion afin d’ajouter le contexte métier aux messages d’échec :

func assertUserValid(t testing.TB, u *User) {
    t.Helper()
    assert.NotEmpty(t, u.Name)
    assert.Positive(t, u.ID)
}

Associer la couverture à testify

testify n’a aucun effet sur les rapports de couverture : la couverture vérifie uniquement que les lignes sont exécutées, quelle que soit la bibliothèque d’assertions utilisée.

Vérification rapide

Quelle est la différence entre testify/assert et testify/require ?

Récapitulatif : couverture et testify

Points clés :

  • go test -cover ; -coverprofile pour le rapport HTML
  • assert : continuer en cas d’échec ; require : s’arrêter en cas d’échec
  • testify/suite pour regrouper les tests avec une configuration commune
  • Une couverture élevée est utile ; des assertions pertinentes sont préférables

Questions Fréquemment Posées

La leçon « Couverture des essais et testify » est-elle gratuite ?

Oui — le texte complet de « Couverture des essais et testify » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Couverture des essais et testify » ?

go test -cover et la bibliothèque d’assertions testify Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Couverture des essais et testify » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Écrire des essais unitaires avec testing
  2. Essais pilotés par table
  3. Doublures d’essai : mocks et stubs
  4. Couverture des essais et testify
← Retour à Go Academy