Maison >développement back-end >Golang >Comment effectuer des tests unitaires à l'aide du framework Golang ?

Comment effectuer des tests unitaires à l'aide du framework Golang ?

WBOY
WBOYoriginal
2024-06-01 10:53:571050parcourir

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.

Comment effectuer des tests unitaires à laide du framework Golang ?

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):断言 ab 相等
  • NotEqual(a, b):断言 ab 不相等
  • 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)
    }
}

🎜Assertions🎜🎜🎜Les tests unitaires vérifient le comportement attendu de votre code en utilisant des assertions. Go fournit une variété de fonctions d'assertion : 🎜
  • Equal(a, b) : affirme que a et b sont égaux li>
  • NotEqual(a, b) : affirmer que a et b ne sont pas égaux
  • Vrai (x) : Affirmez que x est vrai
  • Faux(x) : Affirmez que x est faux
🎜🎜Exemple : Calculer une fonction🎜🎜🎜Créons une simple fonction Ajouter 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 : 🎜rrreee

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn