12

何年も前に、 Agitarと呼ばれる Java テスト ツールが人気を博しました。プロパティベースのテストのようなことをしているように見えました。

最近では、 Haskell の Quickcheckに基づくプロパティ ベースのテストが一般的です。Java には、次のような多数のポートがあります。

私の質問は: Agitar と Quickcheck プロパティベースのテストの違いは何ですか?

4

2 に答える 2

12

私にとって、Haskell QuickCheck の主な機能は次のとおりです。

  1. テスト用のランダムデータを生成します

  2. テストが失敗すると、まだ失敗する最も単純なテスト ケースが見つかるまで、データを繰り返し "縮小" します (たとえば、数値をゼロに変更する、リストのサイズを縮小する)。最も単純なテスト ケースを見ると、多くの場合、バグの場所と修正方法が正確にわかるため、これは非常に便利です。

  3. 単純なデータからテストを開始し、徐々に複雑なデータに移行します。これは、テストがより迅速に失敗することを意味するため、便利です。また、エッジ ケース (空のリスト、ゼロなど) が適切にテストされるようにします。

Quickcheck for Java は (1) をサポートしていますが、(2) または (3) はサポートしていません。Agitar でサポートされている機能はわかりませんが、確認すると便利です。

さらに、ScalaCheck を調べることもできます。Scala は Java と相互運用可能であるため、これを使用して Java コードをテストできます。私は使ったことがないので、どのような機能があるかはわかりませんが、Java Quickcheck よりも多くの機能があると思います。

于 2014-04-24T11:09:50.593 に答える
5

0.6バージョン の時点で、次をjunit-quickcheckサポートするようになったことは注目に値しますshrinking

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

quickcheck2011年以降、新しいリリースはないようです:

https://bitbucket.org/blob79/quickcheck

于 2016-01-09T01:48:46.003 に答える