Maison >développement back-end >Golang >Comment tester les fonctions du package principal dans Go ?

Comment tester les fonctions du package principal dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 16:20:12873parcourir

How to Test Functions in the Main Package in Go?

Test des fonctions du package principal

Dans le domaine des tests Go, on peut rencontrer des difficultés en tentant d'accéder aux fonctions définies dans le package principal à partir de fichiers de tests. Cela est dû à l'isolement inhérent des packages dans Go.

Considérez le problème courant suivant :

// main.go
package main

func foo() string {
    return "Foo"
}
// main_test.go
package main

import "testing"

func TestFoo(t *testing.T) {
    t.Error(foo()) // Undefined: foo
}

Tentative de test foo() à partir du package principal dans main_test.go entraînera une erreur, car la fonction foo() n'est pas accessible dans le package enfant.

Pour résoudre ce problème, une approche consiste à créer un package séparé pour les fonctions vous souhaitez tester. Par exemple :

// util.go
package util

func Foo() string {
    return "Foo"
}
// main.go
package main

import (
    "fmt"
    "log"
    "util"
)

func main() {
    fmt.Println(util.Foo())
}
// util_test.go
package util_test

import (
    "testing"
    "util"
)

func TestFoo(t *testing.T) {
    t.Error(util.Foo()) // Now accessible
}

En structurant votre code de cette manière, vous pouvez isoler la fonctionnalité de test de votre package principal.

Cependant, si vous avez spécifiquement besoin de fonctions de test définies directement dans le package principal, vous devez penser à exécuter des tests pour tous les fichiers simultanément. La commande go test vous permet de spécifier plusieurs fichiers :

go test *.go

De plus, assurez-vous que vos fonctions de test sont nommées correctement dans le fichier _test.go, en respectant la convention de dénomination TestXXX et en passant un pointeur vers testing. T comme argument.

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