2013-08-19 26 views
1

我無法從maven內運行我的scalachecks。例如。以下的小文檔片斷ScalaCheck,JUnit以默認生成器中的NoSuchMethod異常結束

@RunWith(classOf[JUnitRunner]) 
final class MyTest extends FunSuite with Checkers { 
    test("t2") { 
    Prop.forAll((a: String, b: String) => (a+b).startsWith(a)) 
    } 
} 

結束與下面的堆棧轉儲:

java.lang.NoSuchMethodError: scala.runtime.IntRef.zero()Lscala/runtime/IntRef; 
    at org.scalacheck.Gen$.frequency(Gen.scala) 
    at org.scalacheck.Gen$.chooseNum(Gen.scala:455) 
    at org.scalacheck.Arbitrary$$anonfun$arbInt$1.apply(Arbitrary.scala:86) 
    at org.scalacheck.Arbitrary$$anonfun$arbInt$1.apply(Arbitrary.scala:86) 
    at org.scalacheck.Arbitrary$$anon$2.arbitrary$lzycompute(Arbitrary.scala:65) 
    at org.scalacheck.Arbitrary$$anon$2.arbitrary(Arbitrary.scala:65) 
    at org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:69) 
    at org.scalacheck.Arbitrary$$anonfun$arbContainer$1.apply(Arbitrary.scala:299) 
    at org.scalacheck.Arbitrary$$anonfun$arbContainer$1.apply(Arbitrary.scala:299) 
    at org.scalacheck.Arbitrary$$anon$2.arbitrary$lzycompute(Arbitrary.scala:65) 
    at org.scalacheck.Arbitrary$$anon$2.arbitrary(Arbitrary.scala:65) 
    at org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:69) 
    at org.scalacheck.Prop$.forAll(Prop.scala:726) 
    at org.scalacheck.Prop$.forAll(Prop.scala:734) 

我敢打賭,這只是解決一個非常小的事情,但我找不到運行scala-的完整示例與junit-runner一起檢查內部scalatest。

感謝和問候

馬庫斯

+0

像這樣的NoSuchMethodError通常表示您正在使用的庫A版本是針對某個版本的庫B編譯的,而該庫並不存在於您的項目中 - 例如,scalacheck期望您使用某個特定的scala版本。 –

回答

2

這爲我工作:

import org.junit.runner.RunWith 
import org.scalatest.FunSuite 
import org.scalatest.prop.GeneratorDrivenPropertyChecks 
import org.scalatest.junit.JUnitRunner 

@RunWith(classOf[JUnitRunner]) 
final class MyTest extends FunSuite with GeneratorDrivenPropertyChecks { 

    test("t2") { 
    forAll { (a: String, b: String) => 
     assert((a + b).startsWith(a)) 
    } 
    } 
} 

編輯

而且依賴:

scala 2.10.1 
scalatest_2.10-1.9.1.jar 
scalacheck_2.10-1.10.1.jar 
+0

嗨@rarry,我仍然有同樣的例外 - 但自從你的工作,我玩了一些與POM的依賴關係,並最終得到它的工作。非常感謝答覆 – fricke