2012-12-14 4 views
12

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?

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.