Maison > développement back-end > Golang > le corps du texte

Comment couvrir le code dans les tests unitaires Golang ?

WBOY
Libérer: 2024-06-01 12:40:56
original
667 Les gens l'ont consulté

Comment couvrir le code dans les tests unitaires Golang ? Méthode : utilisez l'outil de couverture intégré (allez tester -cover). Utilisez des bibliothèques tierces, telles que la fonction assert de testify. Exemple pratique : utilisez l'outil de couverture et la fonction d'assertion de témoignage pour mesurer la couverture de code de la fonction Factorielle et générer un rapport HTML pour afficher des informations détaillées.

如何覆盖 Golang 单元测试中的代码?

Comment couvrir le code dans les tests unitaires Golang ?

Introduction

La couverture du code est une métrique qui mesure la part du code cible couverte par une suite de tests. Dans les tests unitaires, une couverture de code élevée indique que la majeure partie de la logique métier a été testée, améliorant ainsi la fiabilité du test.

Méthode

1. Utiliser l'outil de couverture de code

Le langage Go fournit l'outil cover pour mesurer la couverture de code. Pour l'utiliser, en plus de la commande normale go test, vous devez également ajouter l'indicateur -cover : cover 工具来测量代码覆盖率。要使用它,除了正常的 go test 命令外,还需要添加 -cover 标志:

go test -cover
Copier après la connexion

2. 利用第三方库

还有许多第三方库可以提供更详细的代码覆盖率报告。例如,可以使用 testify 中的 assert 函数:

import (
    "testing"
    "github.com/stretchr/testify/assert"
)

func TestSomething(t *testing.T) {
    assert.Equal(t, 1, something()) // 覆盖了 something() 函数的 return 语句
}
Copier après la connexion

实战案例

下面是一个简单的 Go 语言函数和相关的单元测试:

// main.go
package main

func Factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * Factorial(n-1)
}

func main() {
    println(Factorial(5)) // 输出:120
}
Copier après la connexion
// factorial_test.go
package main

import "testing"

func TestFactorial(t *testing.T) {
    // 记录 Factorial 函数的覆盖率
    t.Run("Cover", func(t *testing.T) {
        cases := []int{0, 1, 5, 10}
        for _, n := range cases {
            Factorial(n)
        }
    })
}
Copier après la connexion

运行测试:

go test -cover -coverprofile=cover.out
Copier après la connexion

然后,使用 go tool cover -html=cover.outrrreee

🎜2. Utiliser des bibliothèques tierces 🎜🎜. 🎜Il existe de nombreuses bibliothèques tierces qui peuvent fournir des rapports de couverture de code plus détaillés. Par exemple, vous pouvez utiliser la fonction assert dans testify : 🎜rrreee🎜🎜Cas pratique🎜🎜🎜Ce qui suit est une simple fonction du langage Go et les tests unitaires associés : 🎜rrreeerrreee 🎜 Exécutez le test : 🎜rrreee🎜 Ensuite, utilisez go tool cover -html=cover.out pour générer un rapport HTML qui montre les détails de la couverture. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!