Maison  >  Article  >  développement back-end  >  Comment écrire des tests unitaires complets pour les fonctions Go

Comment écrire des tests unitaires complets pour les fonctions Go

PHPz
PHPzoriginal
2024-05-02 13:27:02661parcourir

L'écriture de tests unitaires dans Go permet de garantir la qualité et la fiabilité du code. Les tests unitaires comprennent des étapes telles que l'importation de dépendances, la configuration d'objets, la définition d'entrées et de sorties, l'appel de fonctions et l'affirmation de sorties. En utilisant la fonction assert dans le package de tests, vous pouvez comparer le résultat réel avec le résultat attendu. Utilisez la commande go test pour exécuter des tests et assurez-vous que tous les tests réussissent afin de garantir l'exactitude de votre code Go.

如何为 Go 函数编写全面的单元测试

Écrire des tests unitaires complets pour les fonctions Go

L'écriture de tests unitaires dans Go est essentielle pour garantir la qualité et la fiabilité du code. Les tests unitaires vous permettent d'isoler et de tester le comportement d'une seule fonction ou méthode pour vous assurer qu'elle se comporte comme prévu.

Composition du test unitaire

Un test unitaire typique contient les parties suivantes :

  • Importer les dépendances nécessaires : importez les packages ou bibliothèques requis.
  • Configurer l'objet de test : créez une instance de la fonction ou de l'objet à tester.
  • Définir l'entrée et la sortie attendue : définissez les paramètres d'entrée et les résultats de sortie attendus pour la fonction de test.
  • Appeler la fonction de test : Déclenchez le test en appelant la fonction et en transmettant les paramètres d'entrée.
  • Sortie d'assertion : utilisez la bibliothèque d'assertions pour comparer la sortie réelle et la sortie attendue afin de vérifier si le test réussit.

Cas pratique

Créons une simple fonction Somme et écrivons un test unitaire pour celle-ci : Sum 函数并为其编写一个单元测试:

package main

import (
    "testing"
)

// Sum 返回两个数字之和
func Sum(a, b int) int {
    return a + b
}

func TestSum(t *testing.T) {
    // 设置测试表
    tests := []struct {
        a, b int
        want int
    }{
        {1, 2, 3},
        {-1, 5, 4},
        {0, -5, -5},
    }

    // 遍历测试表,对每个测试用例运行测试
    for _, tt := range tests {
        got := Sum(tt.a, tt.b)
        if got != tt.want {
            t.Errorf("Sum(%d, %d) = %d, want %d", tt.a, tt.b, got, tt.want)
        }
    }
}

断言库

Go 提供了[testing](https://golang.org/pkg/testing/) 包,其中包含各种断言函数,可用于比较实际输出和预期输出。一些常用的断言函数包括:

  • t.Fatal(): 如果断言失败,则终止测试。
  • t.Error(): 报告一个失败,允许测试继续。
  • t.Errorf(): 报告一个带有格式化错误消息的失败。
  • t.Equal(): 比较两个值是否相等。
  • t.NotEqual(): 比较两个值是否不相等。

运行测试

使用 go test

go test

Bibliothèque d'assertions

Go fournit des [tests] (https : //golang.org/pkg/testing/), qui contient diverses fonctions d'assertion qui peuvent être utilisées pour comparer la sortie réelle avec la sortie attendue. Certaines fonctions d'assertion couramment utilisées incluent :

🎜t.Fatal() : termine le test si l'assertion échoue. 🎜🎜t.Error() : signale un échec, permettant au test de continuer. 🎜🎜t.Errorf() : Signaler un échec avec un message d'erreur formaté. 🎜🎜t.Equal() : Compare si deux valeurs sont égales. 🎜🎜t.NotEqual() : Compare si deux valeurs ne sont pas égales. 🎜🎜🎜Exécutez les tests🎜🎜Exécutez les tests unitaires à l'aide de la commande go test : 🎜
PASS
ok      main    [no tests found]
🎜Si tous les tests réussissent, vous verrez le résultat suivant : 🎜rrreee🎜En écrivant des tests unitaires complets, vous peut garantir la précision et la fiabilité du code Go, améliorant ainsi la qualité et la maintenabilité de vos applications. 🎜

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