Come "testare" tutti i test nel mio progetto?


141

Il go testcomando copre i *_test.gofile in una sola directory.

Voglio go testl'intero progetto, il che significa che il test dovrebbe coprire tutti i *_test.gofile nella directory ./e ogni directory dell'albero dei bambini sotto la directory ./.

Qual è il comando per farlo?

Risposte:


278

Questo dovrebbe eseguire tutti i test nella directory corrente e tutte le sue sottodirectory:

$ go test ./...

Questo dovrebbe eseguire tutti i test per determinate directory specifiche:

$ go test ./tests/... ./unit-tests/... ./my-packages/...

Questo dovrebbe eseguire tutti i test con il percorso di importazione con il prefisso foo/:

$ go test foo/...

Questo dovrebbe eseguire tutti i test sul percorso di importazione con il prefisso foo:

$ go test foo...

Questo dovrebbe eseguire tutti i test nel tuo $ GOPATH:

$ go test ...

4
Cordiali saluti in zsh, il nudo ...nell'ultimo esempio deve essere sfuggito, IEgo test \...
Gabe Kopley,

Quando sto cercando di eseguire tutti i test in subdir sto ottenendogo: warning: "subdir/..." matched no packages
Ivan Aracki,

@zzzz come eseguire i test per cartelle specifiche? dì "vai test foo ... bar ...?
Omurbek Kadyrbekov

go test ./...è davvero un ottimo comando !. Grazie per l'aiuto :)
Bumblebee,

53

Da Go 1.9 in poi , utilizzare

go test ./...

In Go 1.6 a 1.8, ./...corrispondeva anche alla vendordirectory . Per saltare i pacchetti in vendita, useresti

go test $(go list ./... | grep -v /vendor/)

Fonti: https://github.com/golang/go/issues/11659 , https://github.com/golang/go/issues/14417 , https://github.com/go-lang-plugin-org/ go-lang-idea-plugin / issues / 2366 , il commento di @ nickgrim.


1
Per quanto possa sembrare semplice questa soluzione, è molto più complicato per le persone su Windows (non lo sono, ma alcuni dei miei compagni di squadra lo sono) eseguire questo. La bellezza di Go in esecuzione nativa su ogni piattaforma senza la necessità di un Makefile è eccezionale.
Konrad Kleine,

5
Vale la pena sottolineare che a partire da Go 1.9 ./... non corrisponde più alla ./vendor/directory, quindi è possibile eseguire tutti i test e nessuno dei test del fornitore congo test ./...
nickgrim

11

Struttura delle cartelle

ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go

vai comando comando Comando

   ProjectName$ go test -v ./...
    ProjectName$ go test  ./...
    ProjectName$ go test -cover ./...

Rapporto di copertura per l'intero progetto

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.