2014-02-17 47 views
4

是否有可能在测试Java代码的ScalaTest中创建自定义的任意生成器(混合了Checkers for ScalaCheck属性)?例如,以下是对每一个测试中FORALL上述创建自定义的任意生成器来测试ScalaTest的Java代码ScalaCheck

val fund = new Fund() 
val fundAccount = new Account(Account.RETIREMENT) 
val consumer = new Consumer("John") 
.createAccount(fundAccount) 
fund.addConsumer(consumer) 
fundAccount.deposit(amount) 

是之前断言结果等

回答

14

你确定罐中的制备型代码所需的步骤。这应该让你开始。

import org.scalacheck._ 
import Arbitrary._ 
import Prop._ 

case class Consumer(name:String) 

object ConsumerChecks extends Properties("Consumer") { 
    lazy val genConsumer:Gen[Consumer] = for { 
    name <- arbitrary[String] 
    } yield Consumer(name) 

    implicit lazy val arbConsumer:Arbitrary[Consumer] = Arbitrary(genConsumer) 

    property("some prop") = forAll { c:Consumer => 
    // Check stuff 
    true 
    } 
}