generated at
Unit Test


『単体テストの考え方の、デトロイト学派視点の定義
以下の3つの条件を満たすtestのこと
1単位の振る舞いを検証する
実行時間が短い
他のtest caseから隔離されている



参考





戻り値のみを見て検証する
副作用がないことが条件
質が高い、保守しやすい
処理の実行が終わったあとにSUTの状態を検証する
実装の詳細を見がち 
普段からFPのノリで書いてるからこれが必要になる状況が見えないなmrsekut
OOP限定の話な気がする
SUTとDOCの間で行われるコミュニケーションを検証する
DOCはmockになる
もっとも偽陽性に対して脆弱
検証の対象となるコミュニケーションがアプリケーションの境界を超えて行われ、かつ、外部から確認できる副作用を発生させる場合にのみ用いる
保守がし辛い

Integration TestもリファクタすることでUnitに変更できる
mockを使用して共有依存を消す








Unit testには価値がない、という論文の解説
unit test批判というか、TDD批判
TDDにおけるtestは実装の補助のためだけにあるで済む話じゃない?という気もするmrsekut
理由
TDDの実践者が言及するテストカバレッジ100%には意味が無い
それはそうmrsekut
バグを取り除く最大の機会はテスト以外のところにある
TDDに問題があるのであって、unit testの問題ではないのではmrsekut
ユニットテストにビジネス価値はほとんどない
TDDはプログラムデザインに害を及ぼす
ユニットテストの維持コストは馬鹿にならない
テストがコードのクオリティを上げる訳ではない、上げるのは開発者自身である