L'écriture de cas de tests fonctionnels dans Go implique l'utilisation du package testing, qui fournit des fonctions de définition de cas de test (func Test) et de reporting des échecs (t.Error). Les tests unitaires testent les fonctions individuelles de manière isolée, tandis que les tests d'intégration se concentrent sur les interactions avec d'autres composants. Les exemples de scénarios de test montrent comment utiliser le package de test pour définir des fonctions de test, définir des scénarios de test d'entrée et de sortie, vérifier les résultats et les exécuter à l'aide de la commande go test.
Lors de l'écriture de code Go, l'écriture de cas de test est cruciale pour garantir que le code est robuste et correct. Vous trouverez ci-dessous un guide pour rédiger des cas de tests fonctionnels, comprenant des exemples pratiques utilisant le langage Go.
1. Tests unitaires vs tests d'intégration
Quand il s'agit de tester des fonctions, il existe deux types principaux :
2. Utilisez le package testing
de Go testing
包
Go 语言中用于编写测试用例的标准库是 testing
包。这个包提供了一些有用的函数和类型,例如:
func Test(t *testing.T)
:定义一个测试用例。t.Error()
:报告测试失败。t.Fail()
:立即使测试失败。t.Skip()
testing
. Ce package fournit des fonctions et des types utiles, tels que : func Test(t *testing.T)
: définissez un scénario de test.
t.Error()
: Signaler l'échec du test.
t.Fail()
: échouez immédiatement au test. t.Skip()
: Ignorer le test en cours.
3. Écrivez un scénario de test
Ce qui suit est un exemple d'écriture d'un scénario de test de fonction :package main import "testing" // myFunc 是要测试的函数 func myFunc(x int) int { return x * x } // TestMyFunc 测试 myFunc 函数 func TestMyFunc(t *testing.T) { // 定义测试用例 tests := []struct { input int expected int }{ {0, 0}, {1, 1}, {2, 4}, {3, 9}, {-1, 1}, } for _, tc := range tests { // 调用正在测试的函数 result := myFunc(tc.input) // 验证结果 if result != tc.expected { t.Errorf("Test failed. Expected: %d, Got: %d", tc.expected, result) } } }
4. Exécutez le scénario de test
🎜🎜Vous pouvez utiliser la commande suivante pour exécuter le scénario de test : 🎜go test
func sum(nums []int) int { sum := 0 for _, num := range nums { sum += num } return sum }
func TestSum(t *testing.T) { tests := []struct { input []int expected int }{ {[]int{}, 0}, {[]int{1}, 1}, {[]int{1, 2}, 3}, {[]int{1, 2, 3}, 6}, {[]int{-1, 0, 1}, 0}, } for _, tc := range tests { result := sum(tc.input) if result != tc.expected { t.Errorf("Test failed. Expected: %d, Got: %d", tc.expected, result) } } }
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!