2013-06-05 15 views
89

パッケージのテストケースが複数のファイルに分散しています。go test <package_name>を実行すると、パッケージ内のすべてのテストケースが実行されます。指定されたファイルでテストケースを実行するには?

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

答えて

130

2つの方法があります。簡単な方法は、-runフラグを使用して、実行するテストの名前に一致するパターンを提供することです。

例:$ go test -run NameOfTest。詳細についてはdocsをご覧ください。

他の方法は、実行するテストを含む、特定のファイルに名前を付けることです。

$ go test foo_test.go 

をしかし、落とし穴があります。

  • foo.goが
  • foo_test.goは、パッケージfoo_testと輸入 'foo' のパッケージfooである場合。これがうまく機能します

'foo_test.go'と 'foo.go'が同じパッケージ(通常のケース)である場合は、 'foo_test'をビルドするために必要な他のすべてのファイルを指定する必要があります。この例では、次のようになります。

$ go test foo_test.go foo.go 

名前パターンを使用することをおすすめします。可能であれば、いつでもすべてのパッケージテストを実行してください。 ZZZZの答え@

+1

'-run'で最初の(簡単な)方法を詳しく教えてもらえますか?私はそのマニュアルを参照することはできません。 –

+1

ああ、私はそれを見つけたhttp://golang.org/cmd/go/#hdr-Test_packages –

+1

それについての情報を見つけることができます 'go help testflag' –

81

はほとんど完了しているが、ちょうど次のようにパッケージ内に単一のテストを実行することができますdocumentation参照を通じて掘るすることから他の人を救うために:あなたが中に渡したい

go test packageName -run TestName 

注意をではないテストが存在するファイル名。

フラグは実際には正規表現を受け入れますので、テストの実行をテストのクラスに限定することができます。ドキュメントから:のIntelliJ IDEA行く-langのプラグインで

-run regexp 
    Run only those tests and examples matching the regular 
    expression. 
+13

パッケージ名は完全なパッケージ名であることに注意してください。例: "github.com/you/stuff/a/b/c" – garbagecollector

+0

1.9.3はパッケージの相対パス。 – Amit

3

(と私はジェットブレーンズゴーグラント島で仮定)あなただけの実行の下で提出するテストの種類を設定することができます>編集構成

screenshot create go test on go file

+1

Goglandでは、テストファイルを右クリックして "run foo_test.go"を選択すると、テストでパッケージをビルドし、そのテストファイル内のすべてのテストの名前を含む正規表現を-runフラグに渡します。本当に便利な機能です。 – Eloff

関連する問題