Maison  >  Article  >  développement back-end  >  Comment améliorer les tests et la couverture des fonctions Golang ?

Comment améliorer les tests et la couverture des fonctions Golang ?

王林
王林original
2024-04-28 08:45:011107parcourir

Comment améliorer la couverture des tests des fonctions Golang ? Mesurer la couverture : utilisez la commande go test -cover. Ajouter des exceptions de scénario de test : ajoutez des exceptions de scénario de test pour les chemins de code non exécutés. Utilisation d'un profil de couverture : utilisez go test -coverprofile=cover.out pour créer un profil de couverture. Utilisez l'outil de couverture : utilisez go tool cover -html=cover.out pour afficher un rapport de couverture détaillé.

Comment améliorer les tests et la couverture des fonctions Golang ?

Comment améliorer la couverture des tests des fonctions Golang

Introduction

La couverture des tests mesure quelles parties de l'application sont exécutées dans le test. Une couverture élevée indique que la majorité des chemins de code dans l'application ont été exécutés pendant les tests, augmentant ainsi la confiance dans la fiabilité du logiciel. Cet article vous guidera sur la façon d'améliorer la couverture des tests de vos fonctions Golang.

Mesurer la couverture

Pour mesurer la couverture, vous pouvez utiliser la commande go test -cover. Cette commande imprimera un rapport de couverture après les tests. go test -cover 命令。该命令将在测试运行后打印覆盖率报告。

go test -cover

实用案例

考虑以下 Golang 函数:

func Sum(a, b int) int {
    return a + b
}

初始测试覆盖率报告如下:

coverage: 50.0% of statements

该覆盖率表明只有 50% 的代码在测试中得到了执行。要提高覆盖率,需要添加测试用例外界因素,以执行未执行的代码路径。

添加测试用例外界因素

对于 Sum 函数,可以添加如下测试用例外界因素,以覆盖未执行的代码路径:

func TestSumNegative(t *testing.T) {
    result := Sum(-1, -2)
    if result != -3 {
        t.Errorf("Expected -3, got %d", result)
    }
}

这个测试用例外界因素测试了函数是否处理负数输入。添加此测试用例外界因素后,覆盖率报告将如下所示:

coverage: 100.0% of statements

使用覆盖率配置文件

为了更容易地跟踪与覆盖率相关的更改,可以使用覆盖率配置文件。覆盖率配置文件包含了覆盖率数据,可用于在不同的测试运行之间进行比较。要创建覆盖率配置文件,请使用 go test -coverprofile=cover.out 命令。

go test -coverprofile=cover.out

使用 cover 工具

cover 工具是一个交互式工具,使您可以浏览代码覆盖率信息。要使用 cover

go tool cover -html=cover.out

Cas pratique

Considérons la fonction Golang suivante : rrreee

Le rapport de couverture de test initial est le suivant :

rrreee

Cette couverture indique que seulement 50 % du code a été exécuté dans le test. Pour améliorer la couverture, vous devez ajouter des exceptions de scénario de test pour exécuter les chemins de code qui ne sont pas exécutés. 🎜🎜🎜Ajouter des exceptions de scénario de test🎜🎜🎜Pour la fonction Sum, vous pouvez ajouter les exceptions de scénario de test suivantes pour couvrir le chemin du code non exécuté : 🎜rrreee🎜Cette exception de scénario de test teste si la fonction Handle négatif saisir. Après avoir ajouté cette exception de cas de test, le rapport de couverture ressemblera à ceci : 🎜rrreee🎜🎜Utilisation des profils de couverture🎜🎜🎜Pour suivre plus facilement les modifications liées à la couverture, vous pouvez utiliser les profils de couverture. Les profils de couverture contiennent des données de couverture qui peuvent être utilisées pour des comparaisons entre différentes séries de tests. Pour créer un profil de couverture, utilisez la commande go test -coverprofile=cover.out. 🎜rrreee🎜🎜Utilisez l'outil cover 🎜🎜🎜 L'outil cover est un outil interactif qui vous permet de parcourir les informations de couverture de code. Pour utiliser l'outil cover, exécutez la commande suivante : 🎜rrreee🎜Cela ouvrira un rapport HTML dans votre navigateur par défaut affichant des données de couverture détaillées pour chaque fonction et méthode. 🎜🎜🎜Résumé🎜🎜🎜En ajoutant des exceptions de cas de test et en utilisant des profils de couverture, vous pouvez améliorer la couverture de test de vos fonctions Golang. Une couverture élevée augmente la confiance dans la fiabilité du logiciel et aide à identifier les zones non testées dans le code. 🎜

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