Mar 11, 2009

xUnit、アサーション、契約プログラミング

今更だけど、「xUnitってなんやねん」というのがよく分からなくて須藤さんに訊いたら英語版WikipediaのxUnitの解説を見るといいと言われたので見てみたところ、日本語版のxUnitのページには無かったxUnit自体の解説がちゃんと含まれてたので、アカウント作って英語版の内容を翻訳して日本語版の方に追加してみた。

英語版によると、「フィクスチャ」と「テストスイート」と「setup→テスト本体→teardownという順番で実行すること」と「アサーション」といった点がxUnitの特徴であると。これらの特徴を備えたテストフレームワークを一般にxUnitと呼ぶと。そんな感じですか。つまりUxUもxUnit型のテストフレームワークの一種である(→UxUはxUnitである)というわけですね。知らんかった。(ぉぃ)

あと、なんでアサーションはアサーションなのか(検証=verifyじゃなくて表明=assertなのか)というのがずっと疑問だったんだけど、これは契約プログラミングという概念に由来する表現なのか。プログラミングなのに契約ってどういうことなんだ? 「規約」とかの誤訳なんじゃないのか? と混乱したけど、説明によると、サブルーチンの呼び出し元はサブルーチンに対して「契約」上のルールに則った値を渡す義務を負い、サブルーチン側は呼び出し元に対して「契約」上のルールに則った値を返す義務を負う、義務が果たされない=契約違反が生じたらその時点ですべての処理をストップする、という風にあったのでなるほど確かにこれは「契約」で正しいなと納得した。

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能