我正在开发一个用Scala编写的项目,并使用ScalaTest进行单元测试。
测试结构的方式是所有测试都包含在套件中。单个测试用例类使用属性@DoNotDiscover
进行修饰,以便当有人运行sbt test
时,只有套件运行且各个类不能独立运行。该套件然后执行所有测试用例。
这是非常好的但是这样做的一个副作用是,如果我sbt test-only com.IndividualTestCase
那么我得到输出
[info] Run completed in 1 second, 142 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 0
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] No tests were executed.
[info] No tests to run for test:testOnly
我想要的是,如果有人说sbt test
,那么只有套件被执行,而@DoNotDiscover
的类不会被执行。
但是,如果我特意调用我的测试用例sbt test-only com.IndividualTestCase
,那么SBT只能找到并执行指定的特定测试用例。
如果类标有@DoNotDiscover
,那么我们就无法在单个测试用例上执行test-only
(我可以轻松地在套件上进行测试)
documentation说ScalaTest will run classes annotated with DoNotDiscover if asked to explicitly, it just won't discover them.
但这并没有发生在我身上。如您所见,单个测试用例上的仅测试命令未运行任何测试。