Maison >développement back-end >Golang >Comment tester des packages dans Go ?
En utilisant le cadre de test intégré du langage Go, les développeurs peuvent facilement écrire et exécuter des tests pour leur code. Le fichier de test se termine par _test.go et contient des fonctions de test commençant par Test, où le paramètre *testing.T représente l'instance de test. Les messages d'erreur sont enregistrés à l'aide de t.Error(). Les tests peuvent être exécutés en exécutant la commande go test. Les sous-tests permettent de décomposer les fonctions de test en parties plus petites et de les créer via t.Run(). Un exemple pratique inclut un fichier de test écrit pour la fonction IsStringPalindrome() dans le package utils, qui teste l'exactitude de la fonction en utilisant une série de chaînes d'entrée et de sortie attendue.
Le langage Go fournit un puissant cadre de test intégré qui permet aux développeurs d'écrire et d'exécuter facilement des tests pour leur code. Voici comment utiliser le package de test Go pour tester votre programme.
Dans Go, les fichiers de test se terminent par _test.go et sont placés dans le même répertoire que le package que vous souhaitez tester. Les fichiers de test contiennent une ou plusieurs fonctions de test commençant par Test
suivi de la fonctionnalité à tester. Test
开头,后面跟要测试的功能。
以下是一个示例测试函数:
import "testing" func TestAdd(t *testing.T) { if Add(1, 2) != 3 { t.Error("Add(1, 2) returned an incorrect result") } }
*testing.T
参数表示测试实例。错误信息使用 t.Error()
记录。
可以通过运行以下命令来运行测试:
go test
如果测试成功,将显示诸如 "PASS" 之类的消息。如果出现错误,将显示错误信息。
子测试允许将一个测试函数分解成更小的部分。这有助于组织测试代码并提高可读性。
以下是如何编写子测试:
func TestAdd(t *testing.T) { t.Run("PositiveNumbers", func(t *testing.T) { if Add(1, 2) != 3 { t.Error("Add(1, 2) returned an incorrect result") } }) t.Run("NegativeNumbers", func(t *testing.T) { if Add(-1, -2) != -3 { t.Error("Add(-1, -2) returned an incorrect result") } }) }
假设我们有一个名为 utils
的包,里面包含一个 IsStringPalindrome()
函数,用于检查一个字符串是否是回文字符串。
下面是如何编写一个测试文件来测试这个函数:
package utils_test import ( "testing" "utils" ) func TestIsStringPalindrome(t *testing.T) { tests := []struct { input string expected bool }{ {"", true}, {"a", true}, {"bb", true}, {"racecar", true}, {"level", true}, {"hello", false}, {"world", false}, } for _, test := range tests { t.Run(test.input, func(t *testing.T) { if got := utils.IsStringPalindrome(test.input); got != test.expected { t.Errorf("IsStringPalindrome(%s) = %t; want %t", test.input, got, test.expected) } }) } }
在这个测试文件中:
tests
数组定义了一系列输入字符串和预期的输出。for
循环遍历 tests
数组,并使用 t.Run()
创建子测试。utils.IsStringPalindrome()
函数并将其结果与预期结果进行比较。如果结果不一致,它使用 t.Errorf()
*testing.T
Les paramètres représentent l'instance de test. Les messages d'erreur sont enregistrés en utilisant t.Error()
. 🎜🎜Exécuter des tests🎜🎜Vous pouvez exécuter des tests en exécutant la commande suivante : 🎜rrreee🎜Si le test réussit, un message tel que "PASS" s'affichera. Si une erreur se produit, un message d'erreur s'affichera. 🎜🎜Utilisation de sous-tests🎜🎜Les sous-tests permettent de diviser une fonction de test en parties plus petites. Cela permet d'organiser le code de test et d'améliorer la lisibilité. 🎜🎜Voici comment écrire un sous-test : 🎜rrreee🎜Cas pratique🎜🎜Supposons que nous ayons un package nommé utils
, qui contient une fonction IsStringPalindrome()
pour vérifier si une chaîne est un palindrome. 🎜🎜Voici comment écrire un fichier de test pour tester cette fonction : 🎜rrreee🎜Dans ce fichier de test : 🎜tests
Le tableau définit une série de chaînes d'entrée et la sortie attendue. 🎜for
parcourt le tableau tests
et crée des sous-tests en utilisant t.Run()
. 🎜utils.IsStringPalindrome()
et compare ses résultats aux résultats attendus. Si les résultats sont incohérents, il utilise t.Errorf()
pour enregistrer une erreur. 🎜🎜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!