如何知道当前正在运行哪个测试

时间:2018-10-02 07:55:40

标签: unit-testing sbt

我们有成千上万的测试,其中一个卡住了(可能是无限循环)。

我想知道正在运行哪些测试,但是sbt仅显示已完成的测试。它还显示了测试标题,但是正如我所说,我们有太多测试无法知道卡住的测试属于哪个标题。

1 个答案:

答案 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)

我们可以在最后一行识别卡住的测试。