私は、また成長するテストスイートのグループを持っていますので、一度だけ実行する必要があるtestcleanupタスクを実行する必要がありますすべてのテストが終了し、テストプロセスが終了する直前です。これは.NET AssebmlyCleanupに似ていますが、カスタムコードを実行することなくScala/Scalatestの世界で同等のものを見つけることができませんでしたか?すべてのスイートのすべてのテストの直後に1回だけ実行できるscalaTestメソッドまたは属性がありますか?
おかげ
私は、また成長するテストスイートのグループを持っていますので、一度だけ実行する必要があるtestcleanupタスクを実行する必要がありますすべてのテストが終了し、テストプロセスが終了する直前です。これは.NET AssebmlyCleanupに似ていますが、カスタムコードを実行することなくScala/Scalatestの世界で同等のものを見つけることができませんでしたか?すべてのスイートのすべてのテストの直後に1回だけ実行できるscalaTestメソッドまたは属性がありますか?
おかげ
私はこれにアプローチする方法を考えてきたし、これを行うための一つの方法は、私たちのbuild.sbt
にビットtest
とtestOnly
をオーバーライドすることです。今度は、/project/
フォルダの下に、当社のクリーンアップが生きるCleanUp.scala
オブジェクトを追加してみましょう
class Suite1 extends FlatSpec{
"Test1 in Suite1" should "succeed" in{
succeed
}
}
と
class Suite2 extends FlatSpec{
"Test1 in Suite2" should "succeed" in{
succeed
}
}
:
object CleanUp{
def cleanUp:Unit = println("Cleaning up after all suites are completed.")
}
だこと だから我々はsrc/test/scala
以下の2つのスイートの下にあるとし最小の例ですが、実際には、必要な複雑なクリーンアップがあればそこにいるかもしれません。 は今私達のbuild.sbt
でのは、次の内容を追加してみましょう:
(test in Test) := {
val testsResult = (test in Test).value
CleanUp.cleanUp
testsResult
}
(testOnly in Test) := {
(testOnly in Test).evaluated
CleanUp.cleanUp
}
すべてのスイート(またはユーザー・スイートで指定されたすべて)が実行された後、クリーンアップが適用されますので、これはtest
とtestOnly
タスクのデフォルトの動作を上書きします。
はたとえば、ここに新しいtestOnly
の私のsbtコンソールチェックです:
[IJ]sbt:AfterAllTests> testOnly Suite1
[info] Suite1:
[info] Test1 in Suite1
[info] - should succeed
[info] Run completed in 150 milliseconds.
[info] Total number of tests run: 1
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
Cleaning up after all suites are completed.
[success] Total time: 0 s, completed Dec 2, 2017 12:19:48 AM
[IJ]sbt:AfterAllTests>
そして、ここで新しいtest
のチェックです:クリーンアップが呼び出されます、あなたが見ることができるように
[IJ]sbt:AfterAllTests> test
[info] Suite2:
[info] Test1 in Suite2
[info] - should succeed
[info] Suite1:
[info] Test1 in Suite1
[info] - should succeed
[info] Run completed in 164 milliseconds.
[info] Total number of tests run: 2
[info] Suites: completed 2, aborted 0
[info] Tests: succeeded 2, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
Cleaning up after all suites are completed.
[success] Total time: 2 s, completed Dec 2, 2017 12:28:25 AM
[IJ]sbt:AfterAllTests>
。 これが役立つことを願っています。