haw*_*eye 11 java haskell quickcheck property-based-testing
许多年前,一种名为Agitar的Java测试工具很受欢迎.它似乎做了类似基于财产的测试.
如今 - 基于Haskell Quickcheck的基于属性的测试很受欢迎.Java有许多端口,包括:
我的问题是:Agitar和Quickcheck基于属性的测试有什么区别?
mhw*_*bat 12
对我来说,Haskell QuickCheck的主要功能是:
它生成随机数据以进行测试
如果测试失败,它会反复"缩小"数据(例如,将数字更改为零,减小列表的大小),直到找到仍然失败的最简单的测试用例.这非常有用,因为当您看到最简单的测试用例时,您通常会确切地知道错误的位置以及如何修复它.
它开始使用简单数据进行测试,并逐渐转向更复杂的数据.这很有用,因为这意味着测试失败的速度更快.此外,它确保正确测试边缘情况(例如,空列表,零).
Quickcheck for Java支持(1),但不支持(2)或(3).我不知道Agitar支持哪些功能,但检查它会很有用.
此外,您可以查看ScalaCheck.由于Scala可与Java互操作,因此您可以使用它来测试Java代码.我没有使用它,所以我不知道它有哪些功能,但我怀疑它有比Java Quickcheck更多的功能.
值得注意的是,从版本开始0.6,junit-quickcheck现在支持shrinking:
http://pholser.github.io/junit-quickcheck/site/0.6-alpha-3-SNAPSHOT/usage/shrinking.html
quickcheck自2011年以来看起来没有任何新版本:
https://bitbucket.org/blob79/quickcheck