在 Play 2.4 scala 中禁用单个测试
Posted
技术标签:
【中文标题】在 Play 2.4 scala 中禁用单个测试【英文标题】:Disable single test in Play 2.4 scala 【发布时间】:2015-12-02 15:06:11 【问题描述】:我的项目中有一些长期运行的测试。这些与我在
中的集成和单元测试并行/test/manual/*
在 Play 2.4 for Scala 中是否有一种方法可以禁用/标记这些测试类。所以他们不会自动运行时
$ activator test
但仅在使用 test-only 命令时运行。
问题是我不想在我的 CI 服务器上运行这些较长的测试。
【问题讨论】:
【参考方案1】:在长时间运行的集成测试中遇到类似问题,我创建了一个源自标准测试配置的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
。
【讨论】:
好的 - 这也是我看到解决这个问题的唯一方法,希望/认为有一个更简单的解决方案,也许是一个简单的注释。不过谢谢。以上是关于在 Play 2.4 scala 中禁用单个测试的主要内容,如果未能解决你的问题,请参考以下文章
如何在 play framework(scala) 2.4 中获取当前会话或请求对象?
Play 2.2:使用 Play Caching (Scala) 对代码进行单元测试时出现问题
在 Play Framework 2.4 中为 Scala 实现 Akka