Maison >développement back-end >Golang >Tutoriel pratique sur les tests unitaires des fonctions Golang

Tutoriel pratique sur les tests unitaires des fonctions Golang

PHPz
PHPzoriginal
2024-04-26 18:18:02850parcourir

Méthode de test unitaire de langue Go : importez le package de test et le package sous test. Définissez les fonctions de test commençant par "Test". Définir les cas de test, y compris les paramètres et les résultats attendus. Parcourez les cas de test, appelez des fonctions et comparez les résultats réels avec les résultats attendus. S'il y a une différence, le test de déclenchement échoue.

Tutoriel pratique sur les tests unitaires des fonctions Golang

Tutoriel pratique sur les tests unitaires des fonctions Go

Les tests unitaires sont une partie indispensable du développement logiciel, ils peuvent nous aider à garantir l'exactitude du code et à réduire les défauts. Dans Go, vous pouvez écrire des tests unitaires à l'aide du package testing intégré. testing 包编写单元测试。

代码示例

假设我们有一个 greetPackage 包,其中包含一个名为 Greet 的函数,该函数接受一个名字参数并返回一条问候语。

package greetPackage

import "fmt"

func Greet(name string) string {
    return fmt.Sprintf("Hello, %s!", name)
}

我们可以使用 testing 包编写一个单元测试来测试 Greet 函数的功能。

package greetPackage_test

import (
    "testing"

    "github.com/example/myproject/greetPackage"
)

func TestGreet(t *testing.T) {
    tests := []struct {
        name     string
        expected string
    }{
        {"Alice", "Hello, Alice!"},
        {"Bob", "Hello, Bob!"},
    }

    for _, test := range tests {
        actual := greetPackage.Greet(test.name)
        if actual != test.expected {
            t.Errorf("Greet(%s) = %s; expected %s", test.name, actual, test.expected)
        }
    }
}

运作原理

  • 步骤 1:引入必需的包。我们需要导入 testing 包和正在测试的包 (greetPackage)。
  • 步骤 2:定义测试函数。测试函数必须以 "Test" 开头,并接受一个 *testing.T 参数。
  • 步骤 3:定义测试用例。我们使用 tests 变量定义一个测试用例切片,其中每个用例包含要测试的参数 (name) 和预期的结果 (expected)。
  • 步骤 4:遍历测试用例并运行测试。我们使用 for 循环依次遍历测试用例,并调用 greetPackage.Greet 函数。
  • 步骤 5:检查实际结果。我们将 greetPackage.Greet 函数的实际结果 (actual) 与预期结果 (expected) 进行比较,如果不同,则引发一个 t.Error
Exemple de code

Supposons que nous ayons un package greetPackage qui contient une fonction appelée Greet qui accepte un paramètre nommé et renvoie un message d'accueil.

go test -v github.com/example/myproject/greetPackage

Nous pouvons utiliser le package testing pour écrire un test unitaire afin de tester la fonctionnalité de la fonction Greet.

PASS
ok  github.com/example/myproject/greetPackage  0.004s

Comment ça marche🎜🎜
  • 🎜Étape 1 : Introduisez les packages nécessaires. 🎜Nous devons importer le package testing et le package en cours de test (greetPackage). 🎜
  • 🎜Étape 2 : Définir la fonction de test. 🎜La fonction de test doit commencer par "Test" et accepter un paramètre *testing.T. 🎜
  • 🎜Étape 3 : Définir les cas de test. 🎜Nous utilisons la variable tests pour définir une tranche de cas de test, où chaque cas contient les paramètres à tester (nom) et les résultats attendus (attendu code> ). 🎜<li>🎜Étape 4 : Parcourez les cas de test et exécutez les tests. 🎜Nous utilisons la boucle <code>for pour parcourir les cas de test dans l'ordre et appeler la fonction greetPackage.Greet. 🎜
  • 🎜Étape 5 : Vérifiez les résultats réels. 🎜Nous comparons le résultat réel (actual) de la fonction greetPackage.Greet avec le résultat attendu (expected), et s'ils sont différents, déclenche une t.Error. 🎜🎜🎜🎜Exécutez le test🎜🎜🎜Exécutez le test en exécutant la commande suivante dans le terminal : 🎜rrreee🎜Si le test réussit, il affichera le message suivant : 🎜rrreee

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