Agitar和Quickcheck基于属性的测试有什么区别?

时间:2014-03-28 12:31:22

标签: java haskell quickcheck property-based-testing

多年前,名为Agitar的Java测试工具很受欢迎。它似乎做了类似基于财产的测试。

如今 - 基于Haskell's Quickcheck的基于属性的测试很受欢迎。 Java有许多端口,包括:

我的问题是: Agitar和Quickcheck基于属性的测试有什么区别?

2 个答案:

答案 0 :(得分:12)

对我来说,Haskell QuickCheck的主要功能是:

  1. 它生成用于测试的随机数据

  2. 如果测试失败,则反复"收缩"数据(例如,将数字改为零, 减少列表的大小),直到找到仍然失败的最简单的测试用例。这非常有用,因为当您看到最简单的测试用例时,您通常会确切地知道错误的位置以及如何修复它。

  3. 它开始使用简单数据进行测试,并逐渐转向更复杂的数据。这很有用,因为这意味着测试失败的速度更快。此外,它确保正确测试边缘情况(例如,空列表,零)。

  4. Quickcheck for Java支持(1),但不支持(2)或(3)。我不知道Agitar支持哪些功能,但检查它会很有用。

    此外,您可以查看ScalaCheck。由于Scala可与Java互操作,因此您可以使用它来测试Java代码。我还没有使用它,所以我不知道它有哪些功能,但我怀疑它有比Java Quickcheck更多的功能。

答案 1 :(得分:5)

值得注意的是,从版本0.6开始,junit-quickcheck现在支持shrinking

http://pholser.github.io/junit-quickcheck/site/0.6-alpha-3-SNAPSHOT/usage/shrinking.html

2011 之后,

quickcheck看起来没有任何新版本:

https://bitbucket.org/blob79/quickcheck

相关问题