2016-01-20 5 views
6

フィクスチャは非常に便利です(フィクスチャは、主に単体テスト用の再利用可能な状態/サポートロジックのためのPythonコントラクトを定義しています)。 Golangにも同様のサポートがあるのだろうかと思っていましたが、テストを実行するたびにいくつかの繰り返しタスクを実行して、サーバーを設定したり、破ったり、いくつかの事前定義されたフィクスチャを使ってテストを実行したりできます。誰かがゴランで同じことをするいくつかの例を教えてもらえますか?Golangテストのフィクスチャ

+1

チェックアウト[イチョウ(https://onsi.github.io/ginkgo)。 – PieOhPah

+0

Thanks @ pie-o-pah – psbits

答えて

6

標準のGoテストツールを使用する場合は、記号TestMain(m *testing.M)で関数を定義し、そこにフィクスチャーコードを配置することができます。 testing package wikiから

これは、試験の前または後に追加のセットアップやティアダウンを行うためのテストプログラムのために必要がある場合があります。テストでは、メインスレッド上で実行されているコードを制御する必要があることもあります。テストファイルは、機能が含まれている場合、これらおよびその他のケースをサポートするために:

func TestMain(m *testing.M)

次いで、生成されたテストではなく、直接テストを実行いるTestMain(m)を呼び出します。 TestMainはメインのgoroutineで実行され、m.Runの呼び出しの回りに必要なセットアップとティアダウンが必要です。次に、m.Runの結果でos.Exitを呼び出す必要があります。 TestMainが呼び出されると、flag.Parseは実行されません。 TestMainがテストパッケージのものを含むコマンドラインフラグに依存する場合は、明示的にflag.Parseを呼び出す必要があります。

いるTestMainの単純な実装である: `BeforeEach`と` AfterEach`を有する

func TestMain(m *testing.M) { 
    flag.Parse() 
    os.Exit(m.Run()) 
} 
関連する問題