Le langage Go fournit un puissant cadre de tests unitaires qui peut être utilisé pour vérifier l'exactitude du code. Lors de la configuration des tests unitaires, créez des fonctions de test unitaire qui commencent par Test et utilisez des fonctions d'assertion (telles que Equal, True, etc.) pour vérifier le comportement attendu. Les tests unitaires peuvent être facilement mis en œuvre en créant un fichier _test.go et en incluant des fonctions de tests unitaires. Ces tests unitaires peuvent être utilisés pour tester des fonctionnalités complexes telles que des fonctions simples, des points de terminaison HTTP ou des requêtes de base de données afin de garantir que le code produit la sortie correcte sous diverses entrées.
Tests unitaires avec Go : cas pratiques
Le langage Go fournit un puissant cadre de tests unitaires qui permet aux développeurs de tester facilement l'exactitude de leur code. Dans cet article, nous verrons comment effectuer des tests unitaires avec Go et expliquerons comment cela fonctionne avec un exemple pratique.
Configurer les tests unitaires
Pour configurer les tests unitaires, créez un nouveau fichier appelé _test.go
dans votre projet. Ce fichier contiendra vos fonctions de tests unitaires, et elles devraient commencer par Test
: _test.go
的新文件。这个文件将包含你的单元测试函数,它们应该以 Test
开头:
import "testing" func TestSomething(t *testing.T) { // 你的测试代码 }
断言
单元测试通过使用断言来验证代码的预期行为。Go 提供了多种断言函数:
Equal(a, b)
:断言 a
和 b
相等NotEqual(a, b)
:断言 a
和 b
不相等True(x)
:断言 x
为真False(x)
:断言 x
为假示例:计算函数
让我们创建一个简单的 Add
函数并为其编写单元测试:
func Add(a, b int) int { return a + b }
import "testing" func TestAdd(t *testing.T) { tests := []struct { a int b int expected int }{ {1, 2, 3}, {3, 4, 7}, {-1, 10, 9}, } for _, tt := range tests { result := Add(tt.a, tt.b) if result != tt.expected { t.Errorf("Add(%d, %d) = %d, expected %d", tt.a, tt.b, result, tt.expected) } } }
实战案例
上述测试确保了 Add
函数在各种输入下产生正确的输出。单元测试还可以用于测试更复杂的功能,例如 HTTP 端点或数据库查询。
例如,我们可以为一个简单的 REST API 编写一个单元测试来验证其 GET
import "testing" import "net/http" import "net/http/httptest" import "encoding/json" type Response struct { Name string `json:"name"` Address string `json:"address"` } func TestGetUser(t *testing.T) { req, err := http.NewRequest("GET", "/user/1", nil) if err != nil { t.Fatal(err) } rr := httptest.NewRecorder() handler := http.HandlerFunc(GetUser) handler.ServeHTTP(rr, req) var response Response err = json.NewDecoder(rr.Body).Decode(&response) if err != nil { t.Fatal(err) } if response.Name != "John Doe" || response.Address != "123 Main St" { t.Errorf("Unexpected response: %v", response) } }
Equal(a, b)
: affirme que a
et b
sont égaux li>NotEqual(a, b)
: affirmer que a
et b
ne sont pas égauxVrai (x)
: Affirmez que x
est vraiFaux(x)
: Affirmez que x
est fauxAjouter
et écrivons un test unitaire pour celle-ci : 🎜rrreeerrreee🎜🎜Pratique case🎜🎜🎜Le test ci-dessus garantit que la fonction Ajouter
produit désormais une sortie correcte pour diverses entrées. Les tests unitaires peuvent également être utilisés pour tester des fonctionnalités plus complexes, telles que les points de terminaison HTTP ou les requêtes de base de données. 🎜🎜Par exemple, nous pouvons écrire un test unitaire pour une simple API REST pour vérifier la réponse de son point de terminaison GET
: 🎜rrreeeCe 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!