テスト駆動開発について学んでいる。手始めに、かの有名な @t_wada さんのライブコーディングデモ動画を眺めてみた。
テスト駆動開発については耳年増のようになっており、「Red -> Green -> Refactoring」のマントラや「プログラムのテストはテストコードで行い、テストコードのテストはプログラムで行う」という考え方については「知識としては知っている」という状態であった。「…とはいえ、実際にテスト駆動で開発を進めるのは難しいよね」と思っていたが、デモ動画を通して、それが「現実世界で実行できるプラクティスなんだな」と感じられた。
耳年増な自分が知らなかったこととしては「アサーションルーレット」がある。これはひとつのテストにたくさんの assertion
がある場合、テストに失敗した時どの assertion
に失敗しているのかわからない、という問題である。正直、そういうテストコードを目にしたことがあるし、自分もたくさん assertion
を並べたことがある…。
これを解決するプラクティスは「One Assertion Per Test 原則」と語られていた。そのまま過ぎるけど、そういうことである。