ScalaTest を使用してプロパティ ベースのテストを実行しようとしています。2 つのカスタム ジェネレーターを使用していくつかのテスト ケースを作成しましたが、正常に動作します。ただし、次のように、1 つのカスタム ジェネレーターで forAll を定義した瞬間:
it should "generate a given number of weights whose total is less than the given total when the given number is > 0, with default upperBound, lowerBound and total" in {
// TODO: Find out why single parameter does not work. maxSize here is a workaround
forAll(reasonableSizes) { (size: Int) =>
whenever(size > 0) {
val range = random.nextLong.abs
val values = DataGenerator.generatePartialWeights(size)
values should have length size
every(values) should (be >= BigDecimal(0) and be <= BigDecimal(1))
values.sum should be < BigDecimal(1)
}
}
}
次のようにEclipseでコンパイルエラーが発生しました:
型の不一致; found : (org.scalacheck.Gen[A], DataGeneratorTest.this.PropertyCheckConfigParam*) required: ?0C[?0E] あいまいであるため、暗黙の変換は適用されないことに注意してください: どちらも型 [A] のオブジェクト Predef 内のメソッド ArrowAssoc (self: A)ArrowAssoc[A] とメソッド Ensuring in object Predef 型 [A](self: A)Ensuring[A] は、(org.scalacheck.Gen[A], DataGeneratorTest.this.PropertyCheckConfigParam* からの可能な変換関数です。 )~?0C[?0E]
ScalaTest のドキュメントで例を試してみました: http://www.scalatest.org/user_guide/generator_driven_property_checks
することによって
it should "testing" in {
val evenInts = for (n <- Gen.choose(-1000, 1000)) yield 2 * n
forAll(evenInts) { (n) => n % 2 should equal(0) }
}
同じエラーが発生しました。
ただし、SBT でコンパイルすると、エラーは発生しません。
sbt compile Java HotSpot(TM) 64-Bit Server [info] Loading project definition from C:\xxx [info] Set current project to cree (in build file:/C:/xxx) [info] 20個のScalaソースをCにコンパイル:\xxx\target\scala-2.11\classes...
[成功] 合計時間: 37 秒、2015 年 3 月 26 日 20:04:15 に完了
何が悪いのかわかりません。誰か助けてくれませんか?ありがとう。
環境:
- OS: Windows 7 エンタープライズ SP1 64 ビット
- スカラ IDE: 4.0.0
- スカラのバージョン: 2.11.6
- ScalaTest バージョン: 2.2.4
- ScalaCheck バージョン: 1.12.2