我们有成千上万的测试,其中一个卡住了(可能是无限循环)。
我想知道正在运行哪些测试,但是sbt仅显示已完成的测试。它还显示了测试标题,但是正如我所说,我们有太多测试无法知道卡住的测试属于哪个标题。
答案 0 :(得分:1)
尝试使用runner arguments来配置文件报告器
-f output.txt
与未格式化或“丑陋”的模式标志U
组合在一起
而不是试图使输出看起来既漂亮又 尽可能人类可读的无格式模式只会打印出来 有关每个事件的详细信息,以帮助您跟踪 解决您要调试的问题。
然后在测试执行期间拖尾输出文件
tail -f output.txt
它将在事件发生时实时显示事件,而不是在测试结束时显示。
现在给出以下示例
Test / testOptions += Tests.Argument("-fU", "output.txt")
class HelloSpec extends FlatSpec with Matchers {
"The Hello object" should "satisfy case 1" in {
assert(true)
}
it should "satisfy case 2" in {
assert(true)
}
it should "satisfy case 3 (stuck here)" in {
while(true) { /* do something forever */ }
assert(true)
}
it should "satisfy case 4" in {
assert(true)
}
}
然后tail -f output.txt
输出
Run starting. Expected test count is: 0
Suite Starting - HelloSpec
Scope Opened - HelloSpec: The Hello object
Test Starting - HelloSpec: The Hello object should satisfy case 1
Test Succeeded - HelloSpec: The Hello object should satisfy case 1
Test Starting - HelloSpec: The Hello object should satisfy case 2
Test Succeeded - HelloSpec: The Hello object should satisfy case 2
Test Starting - HelloSpec: The Hello object should satisfy case 3 (stuck here)
我们可以在最后一行识别卡住的测试。