2016-12-14 8 views
1

私はそれぞれ独自のテストを持ついくつかのテストファイルを持っています。今までは、それぞれが構成オブジェクトを作成する特性を持っています。1つのオブジェクトを複数のScalatestスイートと共有するにはどうすればよいですか?

多くのデータベースを呼び出す作業が多いため、オブジェクトのビルドに2分かかるようになりました(実際には実行する必要があります)。

複数のファイル内の複数のテストスイート間で、このオブジェクト(以下のtldConfigMap、以下同じ)を繰り返してビルドすることなく共有する方法はありますか?

trait TLDMapAcceptanceIsLoadedSpec extends org.scalatest.fixture.FlatSpecLike with TLDConfigMap { 

    val tldConfigMap: Map[String, TLDConfig] = load(withAttributes = true).right.get 

    type FixtureParam = Map[String, TLDConfig] 

    def withFixture(test: OneArgTest) = { 

    withFixture(test.toNoArgTest(tldConfigMap)) // "loan" the fixture to the test 
    } 
} 
+0

答えのコメントで話されたことはありません。私はこれを廃止されたものとして閉鎖することを提案する。 – Suma

答えて

0

あなたはそれだと仮定すると(objectにそれを置くことができます: - ここに

が、私はそれをやっていた方法ですあなたが見ることができるように、形質として持ち込まとき、負荷は()するたびに呼び出されます実際に設定されており、テストによって変更されることはありません)。

object TldConfigMap { 
    val tldConfigMap: Map[String, TLDConfig] = load(withAttributes = true).right.get 
} 

trait TLDMapAcceptanceIsLoadedSpec extends org.scalatest.fixture.FlatSpecLike with TLDConfigMap { 

    def tldConfigMap: Map[String, TLDConfig] = TldConfigMap.tldConfigMap // or just use it directly 

    type FixtureParam = Map[String, TLDConfig] 

    def withFixture(test: OneArgTest) = { 
    withFixture(test.toNoArgTest(tldConfigMap)) // "loan" the fixture to the test 
    } 
} 
+1

Scalatestは各テストスイートを個別にインスタンス化するため、動作しません。したがって、オブジェクトはすべてのテストスイート用に作成されます。 オブジェクトを一度作成してScalatestに渡して使用する方法を見つける必要があります。 –

+0

いいえ、オブジェクトはテストごとに1回のみ作成するようにしてください。スイートごとに1回は作成しないでください(http://stackoverflow.com/questions/15798341/how-to-fork-the-jvm-for-each -test-in-sbtですが、これは一般的なケースではありません)。 –

+0

オブジェクトが作成されたときに起動するデバッグ出力があり、テストディレクトリにある3つのスイートごとに起動されているのが分かります。 –

関連する問題