Maison > développement back-end > Golang > le corps du texte

Une introduction approfondie à l'utilisation des tests de Golang

PHPz
Libérer: 2023-04-11 10:10:44
original
1640 Les gens l'ont consulté

Golang est un langage de programmation moderne doté de nombreuses fonctionnalités attrayantes, telles que l'efficacité, la simplicité et une puissante prise en charge de la concurrence. L'outil de test de Golang est également très puissant. Cet article présentera en profondeur l'utilisation des tests de Golang.

Dans Golang, le code de test est séparé du code testé. Cela permet d'éviter de confondre le code de test avec le code de production et de rendre le code de test plus facile à écrire et à maintenir. Le code de test est placé dans un fichier séparé, se terminant par _test.go, ce qui signifie que le code de test peut utiliser et accéder à tout ce qui se trouve dans le code de production, mais que le code de production ne peut rien utiliser du code de test.

Dans Golang, les tests se présentent sous deux formes : les tests unitaires et les tests d'intégration. Les tests unitaires sont utilisés pour tester une fonction ou une méthode, tandis que les tests d'intégration sont utilisés pour tester l'interaction correcte entre plusieurs composants d'un système.

Tout d’abord, examinons l’utilisation des tests unitaires. Voici le code de test pour une fonction d'ajout simple :

package main

import "testing"

func TestAdd(t *testing.T) {
    input1 := 1
    input2 := 2
    expected := 3
    result := Add(input1, input2)
    if result != expected {
        t.Errorf("Add(%d, %d) = %d; want %d", input1, input2, result, expected)
    }
}
Copier après la connexion

La fonction de test doit commencer par Test, suivi du nom de la fonction de test. Le paramètre de la fonction de test est t *testing.T, qui peut être utilisé pour vérifier si la fonction de test réussit ou échoue. Dans cet exemple, la fonction test vérifie que la fonction Add calcule correctement la somme de 1 et 2, et imprime un message d'erreur si le résultat n'est pas 3.

Lorsque la commande go test est exécutée, la fonction TestAdd sera automatiquement exécutée et les résultats seront affichés. Si la fonction réussit le test, il n'y aura aucune sortie, sinon un message d'erreur sera affiché, comme indiqué ci-dessous :

--- FAIL: TestAdd (0.00s)
    main_test.go:10: Add(1, 2) = 4; want 3
Copier après la connexion

Ensuite, regardons l'utilisation des tests d'intégration. Voici le code de test pour une application web simple :

package main

import (
    "net/http"
    "net/http/httptest"
    "testing"
)

func TestIndexHandler(t *testing.T) {
    req, err := http.NewRequest("GET", "/", nil)
    if err != nil {
        t.Fatal(err)
    }

    rr := httptest.NewRecorder()
    handler := http.HandlerFunc(IndexHandler)

    handler.ServeHTTP(rr, req)

    if rr.Code != http.StatusOK {
        t.Errorf("handler returned wrong status code: got %v want %v",
            rr.Code, http.StatusOK)
    }

    expected := "Hello, world!"
    if rr.Body.String() != expected {
        t.Errorf("handler returned unexpected body: got %v want %v",
            rr.Body.String(), expected)
    }
}
Copier après la connexion

Dans cet exemple, nous créons une requête HTTP et utilisons la fonction httptest.NewRecorder() pour créer un enregistreur de réponses. Nous utilisons ensuite la fonction http.HandlerFunc pour créer un gestionnaire et lui transmettre les enregistreurs de requêtes et de réponses. Enfin, nous vérifions que le code d'état et le contenu du corps de la réponse sont corrects.

Lorsque la commande go test est exécutée, le code de test démarrera notre application Web et exécutera le test. Si le test réussit, il n'y aura aucune sortie, sinon un message d'erreur sera affiché.

Pour résumer, les outils de test de Golang sont très puissants et faciles à utiliser. Ils nous aident à écrire des logiciels fiables et facilitent la maintenance et la mise à jour de notre code de test. Qu'il s'agisse de tests unitaires ou de tests d'intégration, les outils de test de Golang fournissent un moyen simple et efficace de garantir l'exactitude du code, nous devrions donc souvent les utiliser lors de l'écriture du code Golang.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal