Les tests basés sur des tables simplifient l'écriture de scénarios de test dans les tests unitaires Go en définissant les entrées et les sorties attendues avec des tableaux. La syntaxe comprend : 1. Définir une tranche contenant la structure du scénario de test ; 2. Parcourez la tranche et comparez les résultats avec la sortie attendue. Dans le cas réel, un test piloté par table a été effectué sur la fonction de conversion de chaîne en majuscules, et go test a été utilisé pour exécuter le test et imprimer le résultat de réussite.
Test piloté par table est une méthode de test qui utilise une table pour définir plusieurs entrées et sorties attendues. Cela simplifie et accélère le processus d'écriture des cas de test puisqu'il suffit de définir la table elle-même au lieu d'écrire une fonction distincte pour chaque cas de test.
La syntaxe du test piloté par table est la suivante :
import "testing" func TestTableDriven(t *testing.T) { tests := []struct { input string expected string }{ {"a", "A"}, {"b", "B"}, {"c", "C"}, } for _, test := range tests { result := UpperCase(test.input) if result != test.expected { t.Errorf("Expected %q, got %q", test.expected, result) } } }
tests
est une tranche de structure qui définit l'entrée et la sortie attendue à tester. tests
是一个结构体切片,它定义了要测试的输入和预期输出。range tests
循环遍历 tests
切片中的每个测试用例。result
是要测试的函数的输出。if result != test.expected
检查结果是否与预期输出匹配。以下是一个将字符串转换为大写的函数的表驱动的测试:
import ( "testing" "strings" ) func TestUpperCase(t *testing.T) { tests := []struct { input string expected string }{ {"a", "A"}, {"b", "B"}, {"c", "C"}, } for _, test := range tests { result := strings.ToUpper(test.input) if result != test.expected { t.Errorf("Expected %q, got %q", test.expected, result) } } }
要运行测试,请使用 go test
range tests
parcourt chaque scénario de test dans la tranche tests
.
result
est la sortie de la fonction à tester. if result != test.expected
Vérifie si le résultat correspond à la sortie attendue.
go test -v
go test
:🎜 === RUN TestUpperCase --- PASS: TestUpperCase (0.00s) PASS ok github.com/user/pkg 0.005s
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!