2016-09-05 7 views
1

몇 가지 테스트 프레임 워크 (ScalaTest 및 ScalaCheck)를 사용하여 SBT 프로젝트가 있습니다. 대부분의 경우 이는 예상대로 작동합니다. 예 : 테스트을 실행하면 두 가지 테스트가 실행됩니다. 내가 ScalaCheck에 인수를 제공 할 때SBT에서 테스트 전용을 사용할 때 특정 테스트 프레임 워크에 인수 전달

libraryDependencies ++= Seq(
    ... 
    "org.scalatest" %% "scalatest" % "2.2.4" % "test", 
    "org.scalacheck" %% "scalacheck" % "1.12.5" % "test" 
) 

그러나, 테스트 전용를 실행할 때, ScalaTest의 단계와 불평 :

test-only *SomeProp -- -s 10 

[오류] (시험 : testOnly) 자바를 .lang.IllegalArgumentException : 을 지정하면 sbt에서 ScalaTest를 실행할 때 suite (-s) 또는 중첩 된 suite (-i)가 이 지원되지 않습니다. 대신 sbt의 테스트 전용 을 사용하십시오. 상기 예에서 ScalaTest

대신 ScalaCheck의 -s 인수로 불려왔다.

superclass is "org.scalatest.Suite" or annotated with: "org.scalatest.WrapWith" 

및 ScalaCheck : 내가하는 프레임 워크 A에 대한 실행하는하는 등 SBT의 부분에 혼동이 없어야합니다 가정

superclass is either "org.scalacheck.Properties" or "org.scalacheck.Prop" 

ScalaTest에 대한 시험 지문을보고

위의 지문이 주어진 주어진 유형의 테스트. (* SomeProps 변형은 org.scalacheck.Properties를 확장합니다.) 테스트 전용을 호출 할 테스트 프레임 워크를 지정하는 방법이 있습니까? 그렇지 않은 경우 ScalaTest와 ScalaCheck를 다른 구성으로 실행하도록 SBT를 구성해야합니까?

답변

0

속성 기반 테스트 (ScalaCheck)에 대한 별도의 구성을 만들어이 작업을 수행 할 수있었습니다. 아래 build.sbt에 대한 변경 사항을 설명했습니다.

은 내가 시험 설정에서 "기본"테스트 프레임 워크로 ScalaTest을 유지 :
libraryDependencies ++= Seq(
    ... 
    "org.scalatest" %% "scalatest" % "2.2.4" % "test" 
) 

내가 ScalaCheck 속성을 실행하기 위해 별도의 소품 설정을 만들었습니다. src/test/scala에서 src/prop/scala으로 모든 속성 기반 테스트를 이동해야했습니다. 나는 또한 config로 ScalaCheck 의존성을 범위 지정했다. 이것은 구성으로 사용하는 경우에만 사용할 수 있습니다. 마찬가지로 ScalaTest는 테스트 구성에서만 사용할 수 있습니다.

lazy val root = 
    Project("root", file(".")). 
    configs(Prop). 
    settings(inConfig(Prop)(Defaults.testSettings)). 
    settings(libraryDependencies += scalacheck) 

lazy val Prop = config("prop") extend (Runtime) 

lazy val scalacheck = "org.scalacheck" %% "scalacheck" % "1.12.5" % "prop" 

이제 ScalaTest와 ScalaCheck를 아무런 문제없이 인수로 실행할 수 있습니다. 그래서 기본적으로 테스트테스트 전용 실행 ScalaTest 동안 소품 : 테스트소품 : 테스트 전용 실행 ScalaCheck.설정하는 방법에 대한 테스트 구성에

test-only *Spec -- -z "some content" //runs only ScalaTest 

prop:test-only *SomeProp -- -s 10 //runs only ScalaCheck 

자세한 정보는 SBT documentation에서 찾을 수 있습니다.

단 하나의 단점은 내가 테스트을 실행하여 더 이상 모든 테스트를 실행할 수 없다는 것입니다. 나는 리조트에 가야만합니다 :

위의 별칭을 만들면 작업이 더 쉬워집니다.