パッケージのテスト ケースが複数のファイルに散らばっています。実行するgo test <package_name>
と、パッケージ内のすべてのテスト ケースが実行されます。
ただし、すべてを実行する必要はありません。go test
ファイルで定義されたテストケースのみを実行するように、実行するファイルを指定する方法はありますか?
パッケージのテスト ケースが複数のファイルに散らばっています。実行するgo test <package_name>
と、パッケージ内のすべてのテスト ケースが実行されます。
ただし、すべてを実行する必要はありません。go test
ファイルで定義されたテストケースのみを実行するように、実行するファイルを指定する方法はありますか?
2 つの方法があります。簡単な方法は、-run
フラグを使用して、実行したいテストの名前に一致するパターンを提供することです。例:
go test packageName -run NameOfTest
詳細については、ドキュメントを参照してください。フラグは正規表現に一致するため-run
、文字列が含まれている場合、フラグは他のテストも実行する可能性があること
に注意してください。したがって、正確に 'NameOfTest' という名前のテストのみが実行されるようにするには、正規表現を使用する必要があります。NameOfTest
-run
^NameOfTest$
go test -run "^NameOfTest$"
もう 1 つの方法は、実行するテストを含む特定のファイルに名前を付けることです。
go test -v foo_test.go
しかし、落とし穴があります。これは、次の場合にうまく機能します。
foo.go
ですpackage foo
。foo_test.go
入っておりpackage foo_test
、「foo」をインポートしています。foo_test.go
とが同じパッケージの場合foo.go
(一般的なケース)、ビルドに必要な他のすべてのファイルに名前を付ける必要がありますfoo_test
。この例では、次のようになります。
go test foo_test.go foo.go
-run
パターンを使用することをお勧めします。または、可能であれば、常にすべてのパッケージ テストを実行します。
@zzzzの答えはほぼ完全ですが、他の人が参照されているドキュメントを掘り下げる必要がないようにするために、次のようにパッケージで単一のテストを実行できます。
go test packageName -run TestName
テストが存在するファイル名ではなく、テストの名前を渡したいことに注意してください。
フラグは-run
実際に正規表現を受け入れるため、テストの実行をテストのクラスに制限できます。ドキュメントから:
-run regexp
Run only those tests and examples matching the regular
expression.