Junit 如何防止sbt运行集成测试?
Maven surefire插件不运行集成测试(按照惯例,它们以“IT”后缀命名),但sbt同时运行:单元测试和集成测试。那么,如何防止这种行为呢?是否有一种通用的方法来区分ScalaTest的集成测试和单元测试(默认情况下不运行FeatureSpec测试)如何做到这一点,请参见sbt手册:Junit 如何防止sbt运行集成测试?,junit,sbt,scalatest,Junit,Sbt,Scalatest,Maven surefire插件不运行集成测试(按照惯例,它们以“IT”后缀命名),但sbt同时运行:单元测试和集成测试。那么,如何防止这种行为呢?是否有一种通用的方法来区分ScalaTest的集成测试和单元测试(默认情况下不运行FeatureSpec测试)如何做到这一点,请参见sbt手册: 调用sbt-test进行单元测试,调用sbt-fun:test进行集成测试,调用sbt-test-fun:test进行这两种测试。使用最新的sbt最简单的方法就是应用IntegrationTest配置和相应
调用
sbt-test
进行单元测试,调用sbt-fun:test
进行集成测试,调用sbt-test-fun:test
进行这两种测试。使用最新的sbt最简单的方法就是应用IntegrationTest
配置和相应的设置,-然后将测试放在项目的src/it/scala
目录中
//Build.scala
import sbt._
import Keys._
object B extends Build {
lazy val root =
Project("root", file("."))
.configs( FunTest )
.settings( inConfig(FunTest)(Defaults.testTasks) : _*)
.settings(
libraryDependencies += specs,
testOptions in Test := Seq(Tests.Filter(itFilter)),
testOptions in FunTest := Seq(Tests.Filter(unitFilter))
)
def itFilter(name: String): Boolean = name endsWith "ITest"
def unitFilter(name: String): Boolean = (name endsWith "Test") && !itFilter(name)
lazy val FunTest = config("fun") extend(Test)
lazy val specs = "org.scala-tools.testing" %% "specs" % "1.6.8" % "test"
}