Maison  >  Article  >  développement back-end  >  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
WBOYoriginal
2024-06-01 09:48:57511parcourir

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)
        }
    }
}
  • 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)
        }
    }
}

要运行测试,请使用 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
🎜Pour exécuter le test, utilisez go test :🎜
=== RUN   TestUpperCase
--- PASS: TestUpperCase (0.00s)
PASS
ok      github.com/user/pkg   0.005s
🎜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!

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