270

パッケージのテスト ケースが複数のファイルに散らばっています。実行するgo test <package_name>と、パッケージ内のすべてのテスト ケースが実行されます。

ただし、すべてを実行する必要はありません。go testファイルで定義されたテストケースのみを実行するように、実行するファイルを指定する方法はありますか?

4

8 に答える 8

435

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パターンを使用することをお勧めします。または、可能であれば、常にすべてのパッケージ テストを実行します。

于 2013-06-05T09:29:59.890 に答える
132

@zzzzの答えはほぼ完全ですが、他の人が参照されているドキュメントを掘り下げる必要がないようにするために、次のようにパッケージで単一のテストを実行できます。

go test packageName -run TestName

テストが存在するファイル名ではなく、テストの名前を渡したいことに注意してください。

フラグは-run実際に正規表現を受け入れるため、テストの実行をテストのクラスに制限できます。ドキュメントから:

-run regexp
    Run only those tests and examples matching the regular
    expression.
于 2015-08-04T11:39:26.173 に答える