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

Pouvez-vous appeler des fonctions de test Go à partir de fichiers non-test ?

DDD
Libérer: 2024-10-25 15:55:02
original
127 Les gens l'ont consulté

Can You Call Go Test Functions From Non-Test Files?

Appel de fonctions de test à partir de fichiers non-test

Dans Go, les tests reposent sur des conventions et des méthodologies spécifiques. L'une de ces conventions est que les tests doivent être séparés dans leurs propres fichiers de test, qui doivent se terminer par le suffixe "_test.go".

Les fonctions de test peuvent-elles être appelées à partir de fichiers non-test ?

Réponse courte : Non.

Contrairement à votre question, les fonctions de test ne peuvent pas être directement invoquées à partir de fichiers Go non-test. Cette séparation garantit que les tests restent distincts et indépendants du code testé.

Modèles de test dans Go

Go utilise principalement deux types de tests unitaires :

  • Tests en boîte noire : Évaluation des fonctions publiques exportées, imitant la manière dont les appelants externes interagiraient avec elles.
  • Tests en boîte blanche : Évaluation des fonctions privées , fonctions non exportées au sein du même package, fournissant des informations plus approfondies sur les opérations internes.

Exemple

Considérez l'"exemple" de package suivant avec une "Somme" exportée. fonction et une fonction "ajouter" non exportée :

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
}
Copier après la connexion

Test en boîte noire (example_test.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()
        }
    }
}
Copier après la connexion

Test en boîte blanche (example_internal_test.go) :

package example_test

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()
        }
    }
}
Copier après la connexion

En conclusion, appeler des fonctions de test à partir de fichiers non-test viole les principes des tests Go. Des packages de tests distincts doivent être utilisés à des fins de tests unitaires, en respectant le flux de travail et les conventions établies.

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
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!