Maison >développement back-end >Golang >Comment couvrir le code dans les tests unitaires Golang ?

Comment couvrir le code dans les tests unitaires Golang ?

WBOY
WBOYoriginal
2024-06-01 12:40:56739parcourir

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

2. 利用第三方库

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

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

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

实战案例

下面是一个简单的 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
}
// 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)
        }
    })
}

运行测试:

go test -cover -coverprofile=cover.out

然后,使用 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!

Déclaration:
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