ボブおじさんが推しているクリーンテスト

この記事は Calendar for 東京電機大学 | Advent Calendar 2022 - Qiita の2日目です。

昨日は、 OSSにコントリビュートしたのとzodのすゝめ - blog.cateiru.com でした。ぜひ観てください。

この記事はClean Codeのメモです。詳しくは読んで下さい。

TL;DR

  • 洗練されたテストは「読みやすさ」と「読みやすさ」と「読みやすさ」が必要
  • 1つのテストに1つのassert
  • F.I.R.S.T の規則に祖違う

読みやすさ

テストが汚いと、コード変更の妨げとなり結果的にコードも汚くなっていまう。なので読みやすくしよう!

1つのテストに1つのassert

対象 - 条件 - 想定結果規約に従ってわかりやすくなる。重複部分は共通化してしまうことで解決できる。

しかし、ロバートおじさんは2つ以上のassert文を入れることにためらいはないが少なくすべき。

1つのテストでは1つの概念を扱う

↑ のロバートおじさんの見解

F.I.R.S.Tの規則

  • 高速である
  • 独立している
    • 例えば、前のテストでDBにInsertしててそれを次のテストでSELECTして使うというのは後続テストの失敗につながるので ✗
  • 再現性がある
    • テスト内で公開されているAPIとかを叩いたりするのは✗ そのAPIがサ終したらテスト失敗する。
  • 自己検証可能
    • 成功 or 失敗 のどちらかを出力すべき。簡単に判断できるように。
  • 適時性がある
    • 必要なときにすぐ書けるようにすべき。