Как измерить и отобразить время выполнения одного теста?
У меня есть потенциально длительный тест, написанный с помощью scalatest:
test("a long running test") {
failAfter(Span(60, Seconds)) {
// ...
}
}
даже если тест заканчивается в пределах тайм-аута, его время работы может быть ценным для человека, который запускает тест. Как я могу измерить и отобразить время работы этого один конкретный тест в выходе scalatest?
обновление: в настоящее время я измеряю время работы с моей собственной функцией, как и в r.ответ ви. Я хотел бы знать если scalatest уже предлагает эту функциональность.
2 ответов
на -oD
опция даст продолжительность теста. Например, я использую следующее в своей сборке.sbt.
testOptions in Test += Tests.Argument("-oD")
EDIT:
вы можете также использовать следующие для отдельных запусков:
> 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)) {
// ...
}
}
В дополнение к R.в'ы. ответ:
Если у вас есть multiproject строит 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(
...
)
)