很明显,一个人希望通过一个测试作为仅测试的参数,以便您可以执行文档中所说的:运行一个测试。

但是,你怎么做呢?在Java中,您可能有一个UserTest类,该类扩展了WithApplication并在User模型上定义了一堆测试(每个测试都使用@Test)。

你想说

test-only models.UserTest.createAUser

但是仅测试会告诉你
[info] Passed: Total 0, Failed 0, Errors 0, Passed 0
[info] No tests to run for test:testOnly
[success] Total time: 0 s

那么如何只运行一项测试?

最佳答案

是的,SBT仅支持类名粒度。原因是SBT支持的大多数测试框架在每个测试中都不使用一种方法,它们使用DSL进行测试,例如specs2测试如下所示:

"The plus sign" should {
  "add two numbers" in {
    2 + 3 === 5
  }
  "be communatative" in {
    1 + 2 === 2 + 1
  }
}

实际上,这些规范可以任意嵌套,它们可以具有相同的名称,可以对其进行参数化和任意重用,以此类推,以至于指定单个测试并从命令行了解应该执行的操作没有道理。因此,SBT刚刚为所有测试框架中有意义的内容提供了支持,那就是类名的粒度。

09-10 08:47
查看更多