一連の Haskell コードで QuickCheck を使い始めたところです。私は時代遅れです、私は知っています。この質問は 2 部構成です。
まず、クイック チェックの一般的なベスト プラクティスは何ですか? これまでのところ、次のことを取り上げました。
- テストに prop_* という名前を付けます (他のすべてがキャメルケースなので、面倒です)
- エクスポートされたコードをテストします (内部をテストしている場合は、間違っている可能性があります)
- 例ではなく、テスト プロパティ
- 言わないで
X is out of range, Y is in range
- 代わりに、
if x is out of range, normalize x ≠ x
(または他のそのようなプロパティ)と言います
- 言わないで
しかし、私はまだ他のベストプラクティスを把握しています. 特に:
- プロパティはどこに保管されますか?
- 同じファイル?
test/
ディレクトリに?(もしそうなら、どうやってものをインポートしますsrc/
か?)- の下の
Properties/
ディレクトリにsrc
?
最も重要なことは、型クラスのプロパティをテストするにはどうすればよいのでしょうか? たとえば、次の (簡略化された) 型クラスを考えてみましょう。
class Gen a where
next :: a -> a
prev :: a -> a
プロパティをテストしたいと思います∀ x: prev (next x) == x
。もちろん、これには各インスタンスのテストの作成が含まれます。特にテストがより複雑な場合は、インスタンスごとに同じプロパティを記述するのは面倒です。そのようなテストを一般化する標準的な方法は何ですか?