Подтвердить что ты не робот

Как предотвратить sbt от запуска интеграционных тестов?

Maven surefire-plugin не запускает интеграционные тесты (они называются суффиксом "IT" по соглашению), но sbt запускает как: unit, так и интеграцию. Итак, как предотвратить такое поведение? Есть ли общий способ различать интеграционные и модульные тесты для ScalaTest (не запускать FeatureSpec-тесты по умолчанию)

4b9b3361

Ответ 1

Как это сделать, это точно описано в руководстве sbt на http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing#additional-test-configurations-with-shared-sources:

//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 для обоих.

Ответ 2

Самый простой способ с последним sbt - просто применить IntegrationTest config и соответствующие настройки, как описано здесь, - и вы ставите свои тесты в каталоге src/it/scala в вашем проекте.