Maison > développement back-end > Golang > Comment utiliser la méthode de test basée sur des tables dans les tests unitaires Golang ?

Comment utiliser la méthode de test basée sur des tables dans les tests unitaires Golang ?

WBOY
Libérer: 2024-06-01 09:48:57
original
626 Les gens l'ont consulté

Les tests basés sur des tables simplifient l'écriture de scénarios de test dans les tests unitaires Go en définissant les entrées et les sorties attendues avec des tableaux. La syntaxe comprend : 1. Définir une tranche contenant la structure du scénario de test ; 2. Parcourez la tranche et comparez les résultats avec la sortie attendue. Dans le cas réel, un test piloté par table a été effectué sur la fonction de conversion de chaîne en majuscules, et go test a été utilisé pour exécuter le test et imprimer le résultat de réussite.

如何在 Golang 单元测试中使用表驱动的测试方法?

Comment utiliser la méthode de test pilotée par table dans les tests unitaires Golang ?

Test piloté par table est une méthode de test qui utilise une table pour définir plusieurs entrées et sorties attendues. Cela simplifie et accélère le processus d'écriture des cas de test puisqu'il suffit de définir la table elle-même au lieu d'écrire une fonction distincte pour chaque cas de test.

Syntaxe

La syntaxe du test piloté par table est la suivante :

import "testing"

func TestTableDriven(t *testing.T) {
    tests := []struct {
        input    string
        expected string
    }{
        {"a", "A"},
        {"b", "B"},
        {"c", "C"},
    }

    for _, test := range tests {
        result := UpperCase(test.input)
        if result != test.expected {
            t.Errorf("Expected %q, got %q", test.expected, result)
        }
    }
}
Copier après la connexion
  • tests est une tranche de structure qui définit l'entrée et la sortie attendue à tester.
  • tests 是一个结构体切片,它定义了要测试的输入和预期输出。
  • range tests 循环遍历 tests 切片中的每个测试用例。
  • result 是要测试的函数的输出。
  • if result != test.expected 检查结果是否与预期输出匹配。

实战案例

以下是一个将字符串转换为大写的函数的表驱动的测试:

import (
    "testing"
    "strings"
)

func TestUpperCase(t *testing.T) {
    tests := []struct {
        input    string
        expected string
    }{
        {"a", "A"},
        {"b", "B"},
        {"c", "C"},
    }

    for _, test := range tests {
        result := strings.ToUpper(test.input)
        if result != test.expected {
            t.Errorf("Expected %q, got %q", test.expected, result)
        }
    }
}
Copier après la connexion

要运行测试,请使用 go testrange tests parcourt chaque scénario de test dans la tranche tests.

result est la sortie de la fonction à tester.

if result != test.expected Vérifie si le résultat correspond à la sortie attendue.

Exemple pratique🎜🎜Voici un test piloté par table d'une fonction qui convertit une chaîne en majuscule :🎜
go test -v
Copier après la connexion
🎜Pour exécuter le test, utilisez go test :🎜
=== RUN   TestUpperCase
--- PASS: TestUpperCase (0.00s)
PASS
ok      github.com/user/pkg   0.005s
Copier après la connexion
🎜Cela affichera le résultat suivant :🎜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!

É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