Maison > développement back-end > Golang > Comment écrire des cas de test pour les fonctions Golang ?

Comment écrire des cas de test pour les fonctions Golang ?

WBOY
Libérer: 2024-04-26 17:06:02
original
908 Les gens l'ont consulté

L'écriture de cas de tests fonctionnels dans Go implique l'utilisation du package testing, qui fournit des fonctions de définition de cas de test (func Test) et de reporting des échecs (t.Error). Les tests unitaires testent les fonctions individuelles de manière isolée, tandis que les tests d'intégration se concentrent sur les interactions avec d'autres composants. Les exemples de scénarios de test montrent comment utiliser le package de test pour définir des fonctions de test, définir des scénarios de test d'entrée et de sortie, vérifier les résultats et les exécuter à l'aide de la commande go test.

Comment écrire des cas de test pour les fonctions Golang ?

Un guide pour l'écriture de cas de test de fonction dans Go

Lors de l'écriture de code Go, l'écriture de cas de test est cruciale pour garantir que le code est robuste et correct. Vous trouverez ci-dessous un guide pour rédiger des cas de tests fonctionnels, comprenant des exemples pratiques utilisant le langage Go.

1. Tests unitaires vs tests d'intégration

Quand il s'agit de tester des fonctions, il existe deux types principaux :

  • Tests unitaires : Tester le comportement isolé d'une seule fonction.
  • Tests d'intégration : Testez la façon dont une fonction interagit avec d'autres composants dans le système plus vaste.

2. Utilisez le package testing de Go testing

Go 语言中用于编写测试用例的标准库是 testing 包。这个包提供了一些有用的函数和类型,例如:

  • func Test(t *testing.T):定义一个测试用例。
  • t.Error():报告测试失败。
  • t.Fail():立即使测试失败。
  • t.Skip()
La bibliothèque standard pour écrire des cas de test dans le langage Go est le package testing. Ce package fournit des fonctions et des types utiles, tels que :

func Test(t *testing.T) : définissez un scénario de test.

t.Error() : Signaler l'échec du test.

t.Fail() : échouez immédiatement au test. t.Skip() : Ignorer le test en cours.

3. Écrivez un scénario de test

Ce qui suit est un exemple d'écriture d'un scénario de test de fonction :

package main

import "testing"

// myFunc 是要测试的函数
func myFunc(x int) int {
    return x * x
}

// TestMyFunc 测试 myFunc 函数
func TestMyFunc(t *testing.T) {
    // 定义测试用例
    tests := []struct {
        input int
        expected int
    }{
        {0, 0},
        {1, 1},
        {2, 4},
        {3, 9},
        {-1, 1},
    }

    for _, tc := range tests {
        // 调用正在测试的函数
        result := myFunc(tc.input)

        // 验证结果
        if result != tc.expected {
            t.Errorf("Test failed. Expected: %d, Got: %d", tc.expected, result)
        }
    }
}
Copier après la connexion

4. Exécutez le scénario de test

🎜🎜Vous pouvez utiliser la commande suivante pour exécuter le scénario de test : 🎜
go test
Copier après la connexion
🎜🎜5. Cas de combat pratique 🎜🎜🎜Considérons une fonction qui calcule la somme des éléments dans une liste : 🎜
func sum(nums []int) int {
    sum := 0
    for _, num := range nums {
        sum += num
    }
    return sum
}
Copier après la connexion
🎜Voici quelques cas de test : 🎜
func TestSum(t *testing.T) {
    tests := []struct {
        input []int
        expected int
    }{
        {[]int{}, 0},
        {[]int{1}, 1},
        {[]int{1, 2}, 3},
        {[]int{1, 2, 3}, 6},
        {[]int{-1, 0, 1}, 0},
    }

    for _, tc := range tests {
        result := sum(tc.input)

        if result != tc.expected {
            t.Errorf("Test failed. Expected: %d, Got: %d", tc.expected, result)
        }
    }
}
Copier après la connexion

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!

Étiquettes associées:
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