Junit 如何防止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配置和相应

Maven surefire插件不运行集成测试(按照惯例,它们以“IT”后缀命名),但sbt同时运行:单元测试和集成测试。那么,如何防止这种行为呢?是否有一种通用的方法来区分ScalaTest的集成测试和单元测试(默认情况下不运行FeatureSpec测试)

如何做到这一点,请参见sbt手册:


调用
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"
}