2013-08-19 34 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