J'exécute un test dans Go avec une instruction pour imprimer quelque chose (c'est-à-dire pour le débogage des tests) mais cela n'imprime rien.
func TestPrintSomething(t *testing.T) {
fmt.Println("Say hi")
}
Lorsque j'exécute go test sur ce fichier, voici la sortie:
ok command-line-arguments 0.004s
La seule façon de vraiment le faire imprimer, pour autant que je sache, est de l'imprimer via t.Error (), comme ceci:
func TestPrintSomethingAgain(t *testing.T) {
t.Error("Say hi")
}
Qui produit ceci:
Say hi
--- FAIL: TestPrintSomethingAgain (0.00 seconds)
foo_test.go:35: Say hi
FAIL
FAIL command-line-arguments 0.003s
gom: exit status 1
J'ai cherché sur Google et parcouru le manuel, mais je n'ai rien trouvé.
Réponses:
Les structures
testing.T
et lestesting.B
deux ont une méthode.Log
et.Logf
qui semble être ce que vous recherchez..Log
et.Logf
sont similaires àfmt.Print
etfmt.Printf
respectivement.Voir plus de détails ici: http://golang.org/pkg/testing/#pkg-index
fmt.X
imprimer des relevés font le travail à l' intérieur des tests, mais vous trouverez leur production est probablement pas à l' écran où vous vous attendez à trouver et, par conséquent, pourquoi vous devez utiliser les méthodes d'exploitation forestière danstesting
.Si, comme dans votre cas, vous souhaitez voir les journaux des tests qui n'échouent pas, vous devez fournir
go test
l'-v
indicateur (v pour la verbosité). Plus de détails sur les indicateurs de test peuvent être trouvés ici: https://golang.org/cmd/go/#hdr-Testing_flagsla source
Par exemple,
la source
verbose
est ce que je cherchais.Oui: c'était le cas jusqu'à Go 1.13 (août 2019) inclus.
Et cela a été suivi dans le
golang.org
numéro 24929Mais pour (éventuellement) Go 1.14 (Q1 2020): CL 127120
La sortie est maintenant:
Il est en effet dans Go 1.14, comme l'atteste Dave Cheney dans "
go test -v
streaming output ":Avantage, selon Dave:
la source
Pour tester parfois je fais
Vous pouvez également imprimer sur:
la source
fmt.Println("hello")
.t.Log
ett.Logf
imprimez dans votre test, mais peut souvent être manqué car il s'imprime sur la même ligne que votre test. Ce que je fais, c'est les enregistrer de manière à les faire ressortir, c'est-à-direqui l'imprime sur le terminal comme,
la source
Le
*_test.go
fichier est une source Go comme les autres, vous pouvez initialiser un nouvel enregistreur à chaque fois si vous avez besoin de vider une structure de données complexe, voici un exemple:Puis, à chaque fois, à chaque test:
la source