我正在使用scala测试进行测试,不久之前,构建开始失败,因为某些(可能是新的)测试需要超过CI允许的限制。
乍一看,没有测试应该超过超时(10分钟btw),并且通过CI输出,不容易看出哪个测试耗费了这么多时间(或每次测试需要多少时间)
我可以使用简单的基于println的语句来打印每个测试开始/结束时的当前小时,但是我想知道scala测试是否提供了一些内置功能吗?
如果不是,是否有其他scala测试框架/库?
编辑:试图包装测试
我首选lib本身的一些原生方法。我试图在一个方法中包含一个specs2测试,该方法可以获得描述并记录时间,但是在我想要的那一刻,我在运行测试时遇到了困难。我做了这样的事情:
class SomeSpec {
private def withTimeLog(x: Fragment) = {
println(s"Starting test: ${x.description}(${DateTime.now()})")
//what now?
x.executionResult
println(s"End of test: ${x.description}(${DateTime.now()})")
}
withTimeLog("Feature" should {
"stuff" in {
println(s"test: ${DateTime.now()}")
None.isEmpty must beTrue
}
})
}
结果:
Starting test: End(2016-07-28T18:11:53.101+01:00)
End of test: End(2016-07-28T18:11:53.191+01:00)
[info] FeatureSpecV2
[info]
test running at 2016-07-28T18:11:54.037+01:00
[info] A test should
[info] + stuff
意思是,测试最后执行,而不是在2个打印语句之间执行。也许Fragment.execution结果没有运行测试。和其他几个人一起试过。我知道应该使用哪种方法吗?
答案 0 :(得分:2)
您可以通过在命令行上传递showtimes
选项来显示specs2中的执行时间
sbt>testOnly *MySpec -- showtimes
此外,如果您使用未来的匹配器,您可以调整"时间因素"使用timeFactor
命令行选项。