Maison >développement back-end >Golang >Comment tester efficacement les interactions stdin/stdout dans les applications Go ?

Comment tester efficacement les interactions stdin/stdout dans les applications Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 12:47:29546parcourir

How to Effectively Test stdin/stdout Interactions in Go Applications?

Test des interactions stdin/stdout dans Go

Lors du développement d'applications qui interagissent avec stdin et stdout, il est crucial de vérifier leur comportement à l'aide de tests. Prenons un exemple simple dans lequel un programme lit des lignes depuis stdin et les renvoie vers stdout.

Scénario de test avec sous-processus

Initialement, un scénario de test a été écrit en utilisant os /exec pour lancer le programme en tant que sous-processus et communiquer avec ses canaux stdin et stdout. Cependant, cette approche a entraîné des échecs de test en raison de l'utilisation directe de stdin et stdout par la fonction principale.

Test de la logique séparément

Pour résoudre ce problème, le code doit être refactorisé pour séparer la gestion stdin/stdout de la logique principale. Une nouvelle fonction peut être définie qui accepte un io.Reader et un io.Writer comme paramètres, représentant stdin et stdout. Cette fonction peut effectuer les opérations souhaitées, telles que la lecture et la mise en écho des lignes.

Cas de test révisé

<code class="go">func TestEcho(t *testing.T) {
    in := bufio.NewReader(strings.NewReader("abc\n"))
    out := &bytes.Buffer{}

    echo(in, out)

    got := out.String()
    want := "abc\n"
    if got != want {
        t.Errorf("Wanted: %v, Got: %v", want, got)
    }
}</code>

Dans ce cas de test révisé, la fonction d'écho est testée directement. Il fournit une entrée à la fonction à l'aide d'un lecteur de chaîne et capture la sortie à l'aide d'un tampon. En comparant la sortie attendue ("abcn") avec la sortie réelle obtenue du tampon, le test vérifie le comportement correct de la fonction echo.

Cette approche sépare le test de la logique du programme des spécificités de gestion stdin et stdout, fournissant une stratégie de test plus fiable et plus maintenable.

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