La commande go test dans Go fournit un mécanisme de cas de test flexible, comprenant : règles de dénomination : Test
Dans Go, l'utilisation de la commande go test
pour les tests peut garantir l'exactitude et la fiabilité du code. Sa puissance vient d’un mécanisme de cas de test flexible et extensible. go test
命令进行测试可以确保代码的正确性和可靠性。它的强大功能来自灵活且可扩展的测试用例机制。
测试用例函数的命名规则遵循以下格式: Test<功能或模块名>
。每个测试用例函数必须有一个 *testing.T
类型参数,用于报告测试状态和其他信息。
import "testing" func TestAdd(t *testing.T) { // ... 测试代码 }
断言是用来验证期望值和实际值是否一致的函数。Go 的测试包提供了几个断言函数,比如:
t.Equal(a, b)
:验证 a 等于 bt.NotEqual(a, b)
:验证 a 不等于 bt.True(x)
:验证 x 为 truet.False(x)
:验证 x 为 falset.Error(err)
:验证 err 不为 nil子测试允许将大型测试用例分解成较小的、可管理的部分。使用 t.Run()
函数创建子测试,传递子测试名称和一个测试函数。
func TestMath(t *testing.T) { t.Run("add", func(t *testing.T) { // 测试加法的子测试 }) t.Run("subtract", func(t *testing.T) { // 测试减法的子测试 }) }
表格测试可让您使用表格数据运行一组测试用例。使用 t.RunTable()
函数创建表格测试,传递表格数据和一个测试函数。
func TestTable(t *testing.T) { type Input struct { a, b int } tests := []Input{ {1, 2}, {3, 4}, {5, 6}, } t.RunTable("add", func(t *testing.T, in Input) { // 测试 add 函数,使用 in.a 和 in.b }, tests) }
下面是一个使用 go test
测试 Web 服务的示例:
import ( "net/http" "net/http/httptest" "testing" ) func TestGetProducts(t *testing.T) { // 创建一个模拟 HTTP 请求 req, err := http.NewRequest("GET", "/api/products", nil) if err != nil { t.Fatal(err) } // 创建一个响应记录器 rr := httptest.NewRecorder() // 调用正在测试的处理程序 http.HandlerFunc("/api/products", getProducts).ServeHTTP(rr, req) // 验证响应的状态码 if status := rr.Code; status != http.StatusOK { t.Errorf("错误的状态码:%d", status) } // 验证响应 body expected := `{"products": [{"id": 1, "name": "Product 1"}, {"id": 2, "name": "Product 2"}]}` if body := rr.Body.String(); body != expected { t.Errorf("错误的响应 body:%s", body) } }
go test
Test<Nom de la fonction ou du module>
. Chaque fonction de scénario de test doit avoir un paramètre de type *testing.T
qui rapporte l'état du test et d'autres informations. 🎜rrreeet.Equal(a, b)
: Vérifiez que a est égal à b t.NotEqual(a, b)
: Vérifiez que a n'est pas égal à bt.True(x)
: Vérifiez que x est vrai li>t.False(x)
: Vérifiez que x est fauxt.Error(err)
: Vérifiez que err ne l'est pas nilt.Run()
, en passant le nom du sous-test et une fonction de test. 🎜rrreeet.RunTable()
, en transmettant les données de la table et une fonction de test. 🎜rrreeego test
pour tester des services Web : 🎜rrreeego test
est un outil puissant qui vous permet de créer et de gérer divers cas de test. En tirant pleinement parti de la puissance des assertions, des sous-tests et des tests de table, vous pouvez écrire des tests complets et fiables, améliorant ainsi la qualité et la fiabilité de votre code. 🎜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!