使用“ sbt it:test”时,为什么不执行Play / Scala项目中的集成测试?

麦克风

我有一个Play Framework 2.3项目,在其中我想将单元测试和功能测试分开,如下所示:

  1. 运行sbt test应运行单元测试,并排除集成测试
  2. 运行sbt it:test应仅运行集成测试

Scala文档建议使用project/Build.scala,但我想使用build.sbt和的组合project/Build.scala,因此我的配置如下所示(我也尝试将所有配置都放入Build.scala):

build.sbt

....

libraryDependencies ++= Seq(
  "com.typesafe.play" %% "play-json" % "2.2.3",
  "org.scalatest" %% "scalatest" % "2.1.5" % "it, test",
  "org.mockito" % "mockito-all" % "1.9.5" % "it, test"
)

def funTestFilter(name: String): Boolean = ((name endsWith "ItTest") || (name endsWith "IntegrationTest"))
def unitTestFilter(name: String): Boolean = ((name endsWith "Test") && !funTestFilter(name))

testOptions in IntegrationTest := Seq(Tests.Filter(funTestFilter))

testOptions in Test := Seq(Tests.Filter(unitTestFilter))

项目/Build.scala

import sbt._

object Build extends Build {

  lazy val root =
    Project("root", file("."))
      .configs( IntegrationTest )
      .settings( Defaults.itSettings : _* )

}

在这种配置下,运行sbt test会排除我的集成测试(以结尾IntegrationTest),但运行sbt it:test不会找到任何测试。

本文建议将文件放在特定的路径中,但我不知道Play项目的等效路径是什么。

使用标准源层次结构:

src/it/scala for Scala sources
src/it/java for Java sources
src/it/resources for resources that should go on the integration test classpath
雅克·拉斯考斯基

第一个部分-有关在其中设置集成测试的build.sbt问题在另一个问题中描述。sbt 0.13.x中IntegrationTest配置的最小设置是什么?-归结为以下条目build.sbt

Defaults.itSettings

lazy val root = project.in(file(".")).configs(IntegrationTest)

由于Play项目的定义如下:

lazy val root = (project in file(".")).enablePlugins(PlayScala)

您应该添加configs并完成。

lazy val root = project in file(".") enablePlugins(PlayScala) configs(IntegrationTest) 

执行reload或重新启动sbt / activator会话并执行it:test

[it-play] $ it:test
[info] Updating {file:/Users/jacek/sandbox/it-play/}root...
[info] Resolving jline#jline;2.11 ...
[info] Done updating.
[success] Total time: 1 s, completed Sep 13, 2014 7:12:27 PM

至于在集成测试应该在播放项目去的地方,简单的答案是这样做show it:sourceDirectory的外壳,即src/itscalajava以及resources下面的目录包含相应的来源。

it配置中添加测试框架库,即build.sbt应该有类似的内容-注意it配置:

"org.specs2" %% "specs2" % "2.4.2" % "it"

reload了SBT会话或重新启动,并it:test应与Specs2测试下的所有测试工作src/it/scala

要缩小应该执行的测试的范围,请添加过滤器-确保Defaults.itSettings顺序在行之后,因为顺序确实很重要,并且一个可以覆盖另一个:

val funTestFilter: String => Boolean = { name =>
  (name endsWith "ItTest") || (name endsWith "IntegrationTest")
}

testOptions in IntegrationTest += Tests.Filter(funTestFilter)

执行reload或重新启动sbt并执行it:test它应该工作。请执行以下操作show it:testOptions以确保正确加载了设置:

[it-play] $ show it:testOptions
[info] List(Filter(<function1>))

build.sbt对我有用的整个过程如下-它是由创建的activator new it-play play-scala

name := """it-play"""

version := "1.0-SNAPSHOT"

lazy val root = project in file(".") enablePlugins(PlayScala) configs(IntegrationTest)

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  jdbc,
  anorm,
  cache,
  ws,
  "org.specs2" %% "specs2" % "2.4.2" % "it"
)

Defaults.itSettings

val funTestFilter: String => Boolean = { name =>
  (name endsWith "ItTest") || (name endsWith "IntegrationTest")
}

testOptions in IntegrationTest += Tests.Filter(funTestFilter)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么SBT不使用根项目中的解析器(在多模块项目中)

来自分类Dev

干净的sbt项目中的Scala Play框架依赖项

来自分类Dev

干净的sbt项目中的Scala Play框架依赖项

来自分类Dev

使用ThisBuild的多项目Scala SBT测试的不同选项

来自分类Dev

为什么执行无错误测试时sbt退出?

来自分类Dev

为什么执行无错误测试时sbt退出?

来自分类Dev

为什么我应该在sbt playframework项目中使用前端插件?

来自分类Dev

如何使用Scala + Play + SBT复制资源

来自分类Dev

SBT / Scala和集成测试

来自分类Dev

为什么sbt在Play项目中报告“ value enablePlugins不是sbt.Project的成员”?

来自分类Dev

在不同的java maven项目中使用sbt构建的scala项目的传递依赖

来自分类Dev

如何在正常的sbt项目中使用play ws库而不是play?

来自分类Dev

如何在 Play SBT 项目中使用 finder-generator

来自分类Dev

“需要安装 JAI Image I/O 包。” IntelliJ IDEA Scala SBT项目中使用tess4j时出现错误

来自分类Dev

为什么sbt会覆盖子项目中的scala版本?

来自分类Dev

在SBT项目中使用来自Maven Central的处理库时出现奇怪的错误

来自分类Dev

使用SBT创建新的Scala项目?

来自分类Dev

使用SBT创建新的Scala项目?

来自分类Dev

在使用激活器测试从Play 2.2.2迁移到2.3后,为什么不执行任何测试?

来自分类Dev

为什么sbt会在Play 2.3项目中编译sbt后以NoClassDefFoundError:Play 2.2.x项目中的play / Play $失败?

来自分类Dev

在splay 2.3项目中编译sbt后,为什么sbt失败并出现NoClassDefFoundError:在Play 2.2.x项目中的play / Play $?

来自分类Dev

使用新的Play 2.2.0 build.sbt语法的当前SBT 0.13项目的设置

来自分类Dev

SBT将不会在Play Scala项目中更新.classpath

来自分类Dev

从sbt运行Play项目

来自分类Dev

在Intellij Idea中使用SBT项目时了解项目结构

来自分类Dev

使用 sbt-native-packager 为我的 sbt 项目获取 docker 支持时出错

来自分类Dev

将纯Scala中的Play WS API与sbt结合使用

来自分类Dev

在基于SBT的Scala项目中组织文件

来自分类Dev

使用SBT运行JUnit测试

Related 相关文章

  1. 1

    为什么SBT不使用根项目中的解析器(在多模块项目中)

  2. 2

    干净的sbt项目中的Scala Play框架依赖项

  3. 3

    干净的sbt项目中的Scala Play框架依赖项

  4. 4

    使用ThisBuild的多项目Scala SBT测试的不同选项

  5. 5

    为什么执行无错误测试时sbt退出?

  6. 6

    为什么执行无错误测试时sbt退出?

  7. 7

    为什么我应该在sbt playframework项目中使用前端插件?

  8. 8

    如何使用Scala + Play + SBT复制资源

  9. 9

    SBT / Scala和集成测试

  10. 10

    为什么sbt在Play项目中报告“ value enablePlugins不是sbt.Project的成员”?

  11. 11

    在不同的java maven项目中使用sbt构建的scala项目的传递依赖

  12. 12

    如何在正常的sbt项目中使用play ws库而不是play?

  13. 13

    如何在 Play SBT 项目中使用 finder-generator

  14. 14

    “需要安装 JAI Image I/O 包。” IntelliJ IDEA Scala SBT项目中使用tess4j时出现错误

  15. 15

    为什么sbt会覆盖子项目中的scala版本?

  16. 16

    在SBT项目中使用来自Maven Central的处理库时出现奇怪的错误

  17. 17

    使用SBT创建新的Scala项目?

  18. 18

    使用SBT创建新的Scala项目?

  19. 19

    在使用激活器测试从Play 2.2.2迁移到2.3后,为什么不执行任何测试?

  20. 20

    为什么sbt会在Play 2.3项目中编译sbt后以NoClassDefFoundError:Play 2.2.x项目中的play / Play $失败?

  21. 21

    在splay 2.3项目中编译sbt后,为什么sbt失败并出现NoClassDefFoundError:在Play 2.2.x项目中的play / Play $?

  22. 22

    使用新的Play 2.2.0 build.sbt语法的当前SBT 0.13项目的设置

  23. 23

    SBT将不会在Play Scala项目中更新.classpath

  24. 24

    从sbt运行Play项目

  25. 25

    在Intellij Idea中使用SBT项目时了解项目结构

  26. 26

    使用 sbt-native-packager 为我的 sbt 项目获取 docker 支持时出错

  27. 27

    将纯Scala中的Play WS API与sbt结合使用

  28. 28

    在基于SBT的Scala项目中组织文件

  29. 29

    使用SBT运行JUnit测试

热门标签

归档