テストを書く機会が多くなったので、『リーダブルコード』の「テストと読みやすさ」という章を読んだメモです。
リーダブルコード p.179~
テストを読みやすくて保守しやすいものにする
鍵となる考え
他のプログラマが安心してテストの追加や変更ができるように、テストコードを読みやすくする
だめなテストで起きること
- 本物のコードを修正するのを恐れる
- 新しいコードを書いたときにテストを追加しなくなる
設計原則
「大切ではない詳細はユーザから隠し、大切な詳細は目立つようにする」べき
テストの最適な入力値を選択する
鍵となる考え
コードを完全にテストする最も単純な入力値の組み合わせを選択しなければならない。
たとえば、
テストには最もキレイで単純な値を選ぶ。
マイナス数値を削除する機能のテストならば、-9994.2
ではなく-1
でよい。極大な数値をテストしたいのなら、-1e100
のような簡潔な値にしたほうがいい
1つの機能に複数のテスト
コードを検証する「完ぺき」な入力値を1つ作るのではなく、小さなテストを複数作るほうが、簡単で、効果的で、読みやすい。
テストのトップレベルはできるだけ簡潔にする。入出力のテストはコード1行で記述できるといい。
CheckScoreBeforeAfter(input,expected)
テストの機能に名前をつける
テスト関数に説明的な名前をつけて、何をテストしているのかを明らかにする。Test1()ではなく、Test_<関数名>_<状況>のような名前にする。