【发布时间】:2015-12-02 15:06:11
【问题描述】:
我的项目中有一些长期运行的测试。这些与我在
中的集成和单元测试并行/test/manual/*
在 Play 2.4 for Scala 中是否有一种方法可以禁用/标记这些测试类。所以他们不会自动运行时
$ activator test
但仅在使用 test-only 命令时运行。
问题是我不想在我的 CI 服务器上运行这些较长的测试。
【问题讨论】:
我的项目中有一些长期运行的测试。这些与我在
中的集成和单元测试并行/test/manual/*
在 Play 2.4 for Scala 中是否有一种方法可以禁用/标记这些测试类。所以他们不会自动运行时
$ activator test
但仅在使用 test-only 命令时运行。
问题是我不想在我的 CI 服务器上运行这些较长的测试。
【问题讨论】:
在长时间运行的集成测试中遇到类似问题,我创建了一个源自标准测试配置的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 配置中禁用长时间运行的测试:
testOptions in Test := Seq(Tests.Argument("exclude", "LongRunning"))
并且在It 配置中只包含这些长时间运行的测试:
testOptions in It := Seq(Tests.Argument("include", "LongRunning"))
最后 2 个配置有点依赖于您使用的测试框架(在我的例子中是 specs2,scala 测试可能会使用 -n and -l 和 tags 来实现相同的效果)
然后sbt test 将排除所有 LongRunning 测试,如果需要,您可以在交互式 sbt 会话中运行 it:test 或 it:testOnly your.long.running.TestCaseHere。
【讨论】: