13

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

4

2 回答 2

20

如何做到这一点完全记录在http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing#additional-test-configurations-with-shared-sources上的 sbt 手册中:

//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"
}

呼吁sbt test进行单元测试和sbt fun:test集成测试以及sbt test fun:test两者兼而有之。

于 2012-12-14T18:30:18.200 回答
2

使用最新的 sbt 最简单的方法就是应用IntegrationTest配置和相应的设置,如此所述,-然后将测试放在src/it/scala项目的目录中。

于 2013-11-05T18:24:17.537 回答