2012-12-14 3 views
12

Maven surefire-plugin은 통합 테스트를 실행하지 않지만 (규약에 따라 "IT"접미어로 이름 지어 짐) sbt는 유닛과 통합을 모두 실행합니다. 그래서, 어떻게 이런 행동을 막으시겠습니까? ScalaTest에 대한 통합 및 단위 테스트를 구별하는 일반적인 방법이 있나요 (기본적으로 FeatureSpec-테스트를 ​​실행하지 않는)sbt가 통합 테스트를 실행하는 것을 방지하려면 어떻게해야합니까?

답변

19

이 정확히 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입니다.

2

최신 SBT와 가장 간단한 방법은, IntegrationTest 설정 및 설명 here로 해당 설정을 적용하는 것입니다 - 당신은 당신의 프로젝트에 src/it/scala 디렉토리에 테스트를했습니다.

관련 문제