我有一个用scalatest编写的可能长时间运行的测试:
test("a long running test") {
failAfter(Span(60, Seconds)) {
// ...
}
}
即使测试在超时限制内完成,它的运行时间对运行测试的人来说也很有价值。如何在 scalatest 的输出中测量和显示这个特定测试的运行时间?
更新:目前我用自己的函数测量运行时间,就像 rv 的回答一样。我想知道scalatest是否已经提供此功能。
我有一个用scalatest编写的可能长时间运行的测试:
test("a long running test") {
failAfter(Span(60, Seconds)) {
// ...
}
}
即使测试在超时限制内完成,它的运行时间对运行测试的人来说也很有价值。如何在 scalatest 的输出中测量和显示这个特定测试的运行时间?
更新:目前我用自己的函数测量运行时间,就像 rv 的回答一样。我想知道scalatest是否已经提供此功能。
该-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)) {
// ...
}
}
除了 rv 的回答:如果您有多项目构建,testOptions in Test += Tests.Argument("-oD")
则在 build.sbt 的根级别上不起作用,因为 Test 指的是 src/test/scala。你必须把它放在你的子项目设置中
Project(id = "da_project", base = file("da_project"))
.settings(
testOptions in Test += Tests.Argument("-oDG"),
libraryDependencies ++= Seq(
...
)
)