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 statementsProfil 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.htmlSeuils 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 niltestify/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
- Écrire des essais unitaires avec testing
- Essais pilotés par table
- Doublures d’essai : mocks et stubs
- Couverture des essais et testify