Je crée un test simple dans mon répertoire de package appelé reverseTest.go
package main
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世 ,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
chaque fois que j'essaie de l'exécuter, la sortie est
exampleFolder[no test files]
c'est mon go env
GOARCH="AMD64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="AMD64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/juan/go"
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_AMD64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"
Toute aide sera fortement appréciée. Merci!!
Les fichiers contenant des tests doivent être appelés name_test
, Avec le suffixe _test
. De Comment écrire du code Go :
Vous écrivez un test en créant un fichier dont le nom se termine par
_test.go
Qui contient des fonctions nomméesTestXXX
avec la signaturefunc (t *testing.T)
. Le cadre de test exécute chacune de ces fonctions; si la fonction appelle une fonction d'échec telle quet.Error
out.Fail
, le test est considéré comme ayant échoué.
Il est possible que vous n'ayez aucun fichier de test dans le package racine et que vous exécutiez go test -v
ne teste pas les sous-packages, uniquement le package racine.
Par exemple
.
├── Dockerfile
├── Makefile
├── README.md
├── auth/
│ ├── jwt.go
│ ├── jwt_test.go
├── main.go
Comme vous le voyez, il n'y a pas de fichiers de test dans le package racine, seulement le fichier main.go. Vous obtiendrez "aucun fichier de test".
La solution consiste à tester récursivement tous les packages du répertoire de travail en cours
go test -v ./...
Ou si vous utilisez govendor
govendor test +local
Ou vous pouvez spécifier le package (répertoire) à tester
go test -v ./packagename
Ou tester un package récursivement
go test -v ./packagename/...
Votre fonction de test dans votre fichier _test doit commencer par le préfixe "Test"
BIEN:
func TestName (
MAUVAIS:
func NameTest (
Cette fonction ne sera pas exécutée comme un test et les résultats avec l'erreur signalée
J'ai rencontré le même problème. En plus des réponses précédentes, je trouve un problème lorsqu'il est impossible d'exécuter le test si le nom du dossier de votre package est testing
.
Démonstration terminale du problème ci-dessous:
avec testing
nom du dossier:
~/go/src/testing$ go test
? testing [no test files]
sans testing
nom du dossier:
~/go/src/testing_someothername$ go test
PASS
ok testing_someothername 0.089s
Dans mon cas, c'était utile