酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

PexとContracts

id:shiba-yan にうちの会社でユニットテストをやろうとしてたんだけど、結局使ってくれなかったんだーって話をしていたら、Code ContractsとPex使えよ!と教えてもらったよ。

Code Contractsは.NETで「契約による設計(DbC:Design By Contract)」を実現するためのランタイムとVisual Studioに統合される開発環境です。

つまりC#などの言語で契約、つまりメソッド毎に「事前条件 (precondition)」「事後条件 (postcondition)」とクラス(インスタンス)における「不変条件 (invariant)」を記述することで静的検証と実行時の検証をサポートします。

Code Contractsではインターフェイスに契約を記述してそのインターフェイスを実装するすべてのクラスに契約を適用することができてこの点が興味深いです。

Pexは対象のメソッドの構造を解析してコードカバレッジが100%となるパラメータの組み合わせを生成してユニットテストコードを自動生成します。

Code ContractsとPex - Jamzzの日々

Pexは大分前にMSDNマガジンに掲載された時に見ていたんだけど、Code Contractsは知らなかった。近々使っていきたい。