Comment tester les fonctions principales du paquet dans golang?
Je veux tester quelques fonctions qui sont inclus dans mon paquet principal, mais mes essais ne semblent pas être en mesure d'accéder à ces fonctions.
Mon échantillon principal.allez fichier ressemble à ceci:
package main
import (
"log"
)
func main() {
log.Printf(foo())
}
func foo() string {
return "Foo"
}
et mon main_test.allez fichier ressemble à ceci:
package main
import (
"testing"
)
func Foo(t testing.T) {
t.Error(foo())
}
quand je lance go test main_test.go
- je obtenir
# command-line-arguments
.\main_test.go:8: undefined: foo
FAIL command-line-arguments [build failed]
Que je comprends, même si j'ai déplacé le fichier de test ailleurs et a essayé de l'importation à partir de la principale.allez file, je ne pouvais pas l'importer, puisque c'est package main
.
Quelle est la bonne façon de structurer de tels tests? Dois-je enlever tout simplement de la main
paquet de réserves une simple fonction principale de tout et puis de tester les fonctions dans leur propre paquet, ou est-il un moyen pour moi d'appeler ces fonctions à partir du fichier principal pendant les tests?
source d'informationauteur ThePiachu
Vous devez vous connecter pour publier un commentaire.
lorsque vous spécifiez les fichiers sur la ligne de commande, vous devez spécifier toutes
Voici mon parcours:
remarque, dans ma version, j'ai couru avec les deux principaux.aller et main_test.aller sur la ligne de commande
Aussi, votre _test fichier n'est pas tout à fait à droite, vous avez besoin de votre test de la fonction à appeler TestXXX et de prendre un pointeur à l'essai.T
Voici de la modification de la verison:
et de la modification de la sortie:
Tests unitaires n'ira pas très loin. À un certain point, vous devez réellement exécuter le programme. Alors vous tester qu'il fonctionne avec les entrées réelles, à partir de sources réelles, la production réelle de la production à destination réelle. Pour de vrai.
Si vous voulez de l'unité de test d'une chose, la faire sortir de main().
Changement de nom du package principal de foobar dans les deux sources.
Déplacer les fichiers source en vertu de la src/foobar.
Assurez-vous de définir GOPATH dans le dossier où src/foobar réside.
Tester avec