在 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:testit: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

在 Scala Play 框架 2.4 中使用两个资产目录

Play Framework 2.4 在 Scala 模板中使用注入变量

在 Play Framework 2.4 中为 Scala 实现 CORS