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