很明显,一个人希望通过一个测试作为仅测试的参数,以便您可以执行文档中所说的:运行一个测试。
但是,你怎么做呢?在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刚刚为所有测试框架中有意义的内容提供了支持,那就是类名的粒度。