【发布时间】:2014-11-07 05:08:32
【问题描述】:
我有一个Play Framework 2.3 项目,我想将单元测试和功能测试分开如下:
- 运行
sbt test应该运行单元测试并排除集成测试 - 运行
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))
project/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
【问题讨论】:
标签: scala sbt playframework-2.3