テストメソッド内のアサーションに関する努力目標
TDDBCのおさらいはまだちょっとだけ続く。
今日はテストメソッド内にアサーションをどのように書いて行くかについて。
- 理想的にはテストメソッドひとつにつきアサーションひとつにするように努力する
- テストメソッド内の行数は三行にする
言語によっては難しいようだが・・・
なので努力目標。
テストメソッドひとつにつきアサーションはひとつ
ひとつのテストメソッド内に複数のアサーションをまとめると楽ができる。
- テストメソッド名で悩まずに済む
- アサーションの前後に行う処理をsetupやbefore、teardownやafterに切り出さなくても使い回せる
しかしある程度コードが大きくなってくると以下のような問題の方が大きくなってくる。
- テストメソッド内で失敗した時点で実行が止まる
- どのアサーションが失敗したのか一見でわかりにくい
テストメソッド名とは関係ないアサーションが混じったりもしそう。
そうなるとちょっとしたカオス。
テストメソッド内の行数は三行にする
これはテストの行数が少ないほど何をやっているのか明確になるため。
その三行の内訳は
- 準備
- 実行
- 検証
準備を前処理としてメソッド外に切り出して、実行と検証が同じ行でできれば一行にすることもできてうつくしい。
ただ努力目標と言うことなので、行数を増やすことでテストコードがわかりやすくなるならそれもアリということかな。