Maven surefire-plugin non esegue test di integrazione (denominati con suffisso "IT" per convenzione), ma sbt esegue entrambi: unità e integrazione. Quindi, come prevenire questo comportamento? Esiste un modo comune per distinguere test di integrazione e di unità per ScalaTest (non eseguire FeatureSpec-test per impostazione predefinita)Come impedire a SBT di eseguire test di integrazione?
12
A
risposta
19
Come per farlo è esattamente documentato sul manuale SBT sulla 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"
}
Chiamata sbt test
per i test delle unità e sbt fun:test
per il test di integrazione e sbt test fun:test
per entrambi.
2
Il modo più semplice con l'ultimo sbt è solo per applicare la configurazione IntegrationTest
e le impostazioni corrispondenti come descritto here, - e hai messo i tuoi test nella directory src/it/scala
nel tuo progetto.