ScalaTest / SBT“ testOnly com.acme.someText--n Slow”忽略所有测试

时间:2018-07-05 04:07:11

标签: scalatest

我正在尝试使用ScalaTest的标记功能来限制在测试套件中运行的测试范围。不幸的是,它根本无法正常工作。我尝试过的任何语法都只会导致根本没有测试运行。

import org.scalatest.tagobjects._
"Ship service" should {
    "return to port" taggedAs(Slow) in {
        whenReady(client.getShip(shipId).invoke()) { ship =>
            whenReady(client.dock(ship.id).invoke()) { response =>
                response should be(Done)
            }
        }
    }
}

我也尝试过使用"return to port" taggedAs(org.scalatest.tagobjects.Slow),但这没什么区别。

当我尝试仅在SBT中运行Slow测试时,没有任何测试运行:

sbt:ship-service> testOnly "com.acme.ship.ShipSpec -- -n org.scalatest.tagobjects.Slow"
[info] ScalaTest
[info] Run completed in 13 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.

我也尝试过:

sbt:ship-service> testOnly "com.acme.ship.ShipSpec -- -n Slow"
sbt:ship-service> testOnly com.acme.ship.ShipSpec -- -n Slow

第一个没有区别。在第二个测试中(不带引号),每个测试都会运行,无论使用了什么标记(因此所有测试都包括未标记和已标记)。

1 个答案:

答案 0 :(得分:2)

假设您正在使用org.scalatest.tagobjects.Slow,而不是将其实现为object Slow extends Tag("org.scalatest.tags.Slow"),那么您需要执行testOnly com.acme.ship.ShipSpec -- -n org.scalatest.tags.Slow或定义自己的标签fe:case object Slow extends Tag("Slow")