プロジェクトのすべてのテストを「テストする」方法は?


141

このgo testコマンドは*_test.go、1つのディレクトリ内のファイルのみをカバーします。

go testはプロジェクト全体にしたいのです。つまり、テストは*_test.godir内のすべてのファイルと、./dirの下のすべての親ツリーdir をカバーする必要があります./

これを行うコマンドは何ですか?

回答:


278

これにより、現在のディレクトリとそのすべてのサブディレクトリですべてのテストが実行されます。

$ go test ./...

これにより、指定された特定のディレクトリに対してすべてのテストが実行されます。

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

これにより、foo/次の接頭辞が付いたインポートパスですべてのテストが実行されます。

$ go test foo/...

これはすべてのテストを実行するはずfooです:

$ go test foo...

これにより、$ GOPATH内のすべてのテストが実行されます。

$ go test ...

4
zshのFYI ...、最後の例の裸、エスケープする必要があります、IEgo test \...
Gabe Kopley 2016年

私は取得していますサブディレクトリ内のすべてのテストを実行しようとしていた場合go: warning: "subdir/..." matched no packages
イワンAracki

@zzzz特定のフォルダのテストを実行するにはどうすればよいですか?「go foo test ... bar ...?
Omurbek Kadyrbekov

go test ./...本当に素晴らしいコマンドです!。助けてくれてありがとう:)
bumblebee

53

Go 1.9以降では、

go test ./...

Go 1.6から1.8では、./...vendorディレクトリと一致しました。ベンダーのパッケージをスキップするには、次を使用します

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

出典:https://github.com/golang/go/issues/11659https://github.com/golang/go/issues/14417https://github.com/go-lang-plugin-org/ go-lang-idea-plugin / issues / 2366、@ nickgrimのコメント。


1
このソリューションの見た目と同じくらい簡単ですが、これを実行することは、Windowsの人々(私はそうではありませんが、チームの仲間の一部はそうです)にとってはるかに複雑になります。Makefileを必要とせずに各プラットフォームでネイティブに実行されるGoの美しさは素晴らしいものです。
Konrad Kleine 2016

5
価値があることを指摘1.9が行くのと ./...はもはや一致した./vendor/ディレクトリを、あなたは全てのテストを実行しないと、とベンダーのテストのいずれことができるようにgo test ./...
nickgrim

11

フォルダ構造

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

go testコマンドコマンド

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

プロジェクト全体のカバレッジレポート

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.