Maison > développement back-end > Golang > Quels outils existe-t-il pour tester et couvrir les fonctions Golang ?

Quels outils existe-t-il pour tester et couvrir les fonctions Golang ?

WBOY
Libérer: 2024-04-26 21:30:02
original
527 Les gens l'ont consulté

Outils de test de fonction et de couverture : outils de test : tests de bibliothèque standard Gooutils de couverture de témoignage/affirmation : go testgopcover

Quels outils existe-t-il pour tester et couvrir les fonctions Golang ?

Outils de test de fonction et de couverture Go

Dans le développement Go, les fonctions sont testées et la mesure de la couverture est essentielle pour garantir l'exactitude et la fiabilité de votre code. L’écosystème Go fournit à cet effet une variété d’outils matures.

Outils de test

  • test pour la bibliothèque standard Go : la bibliothèque standard Go fournit un package de test intégré pour écrire et exécuter des cas de test. Il fournit une API conviviale qui vous permet de définir facilement des tests et des assertions.

    import (
      "testing"
    
      "github.com/stretchr/testify/assert"
    )
    
    func TestAdd(t *testing.T) {
      assert.Equal(t, 10, Add(5, 5))
    }
    Copier après la connexion
  • testify/assert : Il s'agit d'une bibliothèque tierce qui fournit une série de fonctions d'assertion qui vous permettent de vérifier plus facilement les valeurs attendues par rapport aux résultats réels. Il fournit une syntaxe claire et lisible pour l'écriture de tests.

    import "github.com/stretchr/testify/assert"
    
    func TestAdd(t *testing.T) {
      result := Add(5, 5)
      assert.True(t, result == 10)
    }
    Copier après la connexion

Coverage Tool

  • go test : La commande go test inclut un outil de couverture intégré qui génère des rapports de couverture de code lors de l'exécution de tests. Il fournit des informations détaillées sur la couverture par fichier, package et fonction. go test 命令包括一个内置的覆盖率工具,它可以在运行测试时生成代码覆盖率报告。它提供了按文件、包和函数的细粒度覆盖率信息。

    go test -coverprofile=coverage.out
    Copier après la connexion
  • gopcover:这是一个轻量级的第三方覆盖率工具,它生成更详细的报告,包括未覆盖的代码行。它还可以生成可视化覆盖率报告。

    gopcover -v -o coverage.html
    Copier après la connexion

实战案例

下面是一个使用 go testtesting 库编写测试的示例:

package main

import (
    "testing"
)

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

func TestAdd(t *testing.T) {
    tests := []struct {
        a, b int
        expected int
    }{
        {1, 2, 3},
        {3, 4, 7},
    }

    for _, test := range tests {
        t.Run(string(test.a)+"+"+string(test.b), func(t *testing.T) {
            result := Add(test.a, test.b)
            if result != test.expected {
                t.Errorf("Expected %d, got %d", test.expected, result)
            }
        })
    }
}
Copier après la connexion

在这个示例中,TestAdd 函数包含一个切片,其中包含输入值和预期的输出值。对于每个测试用例,函数运行测试并使用 t.Errorfrrreee

🎜🎜🎜gopcover🎜 : Il s'agit d'un outil de couverture tiers léger qui génère des rapports plus détaillés comprenant des lignes de code découvertes. Il peut également générer des rapports de couverture visuelle. 🎜rrreee🎜🎜🎜🎜Cas pratique🎜🎜🎜Voici un exemple d'écriture d'un test en utilisant les bibliothèques go test et testing : 🎜rrreee🎜Dans cet exemple, La fonction TestAdd contient une tranche contenant la valeur d'entrée et la valeur de sortie attendue. Pour chaque scénario de test, la fonction exécute le test et signale toute incohérence à l'aide de t.Errorf. 🎜

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