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

Pouvez-vous appeler une fonction de test depuis l'extérieur d'un fichier de test dans Go ?

Patricia Arquette
Libérer: 2024-10-26 06:32:02
original
986 Les gens l'ont consulté

Can You Call a Test Function from Outside a Test File in Go?

Pouvez-vous appeler une fonction de test depuis l'extérieur d'un fichier de test ?

Dans Go, les tests unitaires sont généralement exécutés à l'aide de go test, qui identifie et exécute les fonctions de test marquées de le paramètre testing.T. Cependant, la question se pose : peut-on invoquer une fonction de test à partir d'un fichier non-test pour lancer l'exécution du test ?

La réponse : une limitation du framework

Malheureusement, la réponse est non. Le cadre de test de Go est conçu pour imposer une séparation entre le code de test et le code non-test. Les fonctions de test ne doivent être appelées qu'à partir des fichiers de test et les unités testées doivent être importées à partir du package approprié.

Modèles de test dans Go

Go prend en charge deux modèles de test principaux :

  • Tests en boîte noire : Teste les fonctions exportées depuis l'extérieur du package, en simulant la façon dont d'autres packages interagiraient avec elles.
  • Tests en boîte blanche : Teste les fonctions non exportées à partir du package, donnant accès aux détails d'implémentation internes.

Mise en pratique

Considérons un exemple de package nommé example avec une fonction utilitaire d'ajout et une somme exportée. fonction qui utilise la fonction d'ajout interne.

example.go : package avec des fonctions exportées et non exportées

<code class="go">package example

func Sum(nums ...int) int {
    sum := 0
    for _, num := range nums {
        sum = add(sum, num)
    }
    return sum
}

func add(a, b int) int {
    return a + b
}</code>
Copier après la connexion

Test Black-Box dans example_test.go

<code class="go">package example_test

import (
    "testing"

    "example"
)

func TestSum(t *testing.T) {
    tests := []struct {
        nums []int
        sum  int
    }{
        {nums: []int{1, 2, 3}, sum: 6},
        {nums: []int{2, 3, 4}, sum: 9},
    }

    for _, test := range tests {
        s := example.Sum(test.nums...)
        if s != test.sum {
            t.FailNow()
        }
    }
}</code>
Copier après la connexion

Tests en boîte blanche dans example_internal_test.go

<code class="go">package example

import "testing"

func TestAdd(t *testing.T) {
    tests := []struct {
        a   int
        b   int
        sum int
    }{
        {a: 1, b: 2, sum: 3},
        {a: 3, b: 4, sum: 7},
    }

    for _, test := range tests {
        s := add(test.a, test.b)
        if s != test.sum {
            t.FailNow()
        }
    }
}</code>
Copier après la connexion

En conclusion, l'appel d'une fonction de test depuis l'extérieur d'un fichier de test n'est pas possible en raison de la séparation conçue entre le code de test et le code non-test. en Aller. Les tests unitaires doivent toujours être exécutés via la commande go test, garantissant la séparation des problèmes et empêchant l'exécution involontaire de code.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!