何年も前に、 Agitarと呼ばれる Java テスト ツールが人気を博しました。プロパティベースのテストのようなことをしているように見えました。
最近では、 Haskell の Quickcheckに基づくプロパティ ベースのテストが一般的です。Java には、次のような多数のポートがあります。
私の質問は: Agitar と Quickcheck プロパティベースのテストの違いは何ですか?
何年も前に、 Agitarと呼ばれる Java テスト ツールが人気を博しました。プロパティベースのテストのようなことをしているように見えました。
最近では、 Haskell の Quickcheckに基づくプロパティ ベースのテストが一般的です。Java には、次のような多数のポートがあります。
私の質問は: Agitar と Quickcheck プロパティベースのテストの違いは何ですか?
私にとって、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年以降、新しいリリースはないようです: