11

scalatestで記述された潜在的に長時間実行されるテストがあります。

test("a long running test") {
  failAfter(Span(60, Seconds)) {
    // ...
  }
}

テストがタイムアウト制限内に終了した場合でも、その実行時間は、テストを実行する人にとって貴重な場合があります。scalatest の出力で、この特定の1 つのテストの実行時間を測定して表示するにはどうすればよいですか?

更新:現在、rv の回答と同じように、独自の関数で実行時間を測定しています。scalatestがこの機能を既に提供しているかどうかを知りたいです。

4

2 に答える 2

14

この-oDオプションは、テストの期間を示します。たとえば、build.sbt で次を使用します。

testOptions in Test += Tests.Argument("-oD")

編集:

個々の実行に次を使用することもできます。

> test-only org.acme.RedSuite -- -oD

http://www.scalatest.org/user_guide/using_scalatest_with_sbtを参照してください。

さらに、一般的な時間測定のために次の関数を定義できます。

def time[T](str: String)(thunk: => T): T = {
  print(str + "... ")
  val t1 = System.currentTimeMillis
  val x = thunk
  val t2 = System.currentTimeMillis
  println((t2 - t1) + " msecs")
  x
}

どこでも使用できます (ScalaTest に依存しません)。

test("a long running test") {
  time("test running"){
    failAfter(Span(60, Seconds)) {
    // ...
  }
}
于 2013-03-15T16:46:09.720 に答える