在 Play 2.4 scala 中禁用单个测试

Disable single test in Play 2.4 scala

我的项目中有一些很长的 运行ning 测试。这些与我在

中的集成和单元测试并行进行
/test/manual/*

Play 2.4 for Scala 中是否有方法disable/mark 这些测试类。所以当

时它们不会自动运行
$ activator test

但仅在使用 test-only 命令时 运行。

问题是我不想 运行 在我的 CI 服务器上进行这些较长的测试。

长期 运行ning 集成测试存在类似问题,我创建了一个从标准测试配置派生的 It 配置(在 <projectHome>/build.sbt 中):

lazy val It = config("it").extend(Test)

然后我将源和测试源添加到此配置

scalaSource in It <<= (scalaSource in Test)

并且您需要启用当前项目中可用的配置和相应任务

lazy val root = (project in file(".")).configs(It)
                                      .settings(inConfig(It)(Defaults.testTasks): _*)

然后我在 Test 配置中禁用长 运行ning 测试:

testOptions in Test := Seq(Tests.Argument("exclude", "LongRunning"))

并且在 It 配置中仅包含这些长 运行ning 测试:

testOptions in It := Seq(Tests.Argument("include", "LongRunning"))

最后两个配置有点依赖于您使用的测试框架(在我的例子中是 specs2,scala 测试可能会使用 -n and -l in addition to tags 来实现相同的目的)

然后 sbt test 将排除所有 LongRunning 测试,如果需要,您可以 运行 it:testit:testOnly your.long.running.TestCaseHere 在交互式 sbt 会话中。