テスト駆動開発について学んでいる。手始めに、かの有名な @t_wada さんのライブコーディングデモ動画を眺めてみた。

テスト駆動開発については耳年増のようになっており、「Red -> Green -> Refactoring」のマントラや「プログラムのテストはテストコードで行い、テストコードのテストはプログラムで行う」という考え方については「知識としては知っている」という状態であった。「…とはいえ、実際にテスト駆動で開発を進めるのは難しいよね」と思っていたが、デモ動画を通して、それが「現実世界で実行できるプラクティスなんだな」と感じられた。

耳年増な自分が知らなかったこととしては「アサーションルーレット」がある。これはひとつのテストにたくさんの assertion がある場合、テストに失敗した時どの assertion に失敗しているのかわからない、という問題である。正直、そういうテストコードを目にしたことがあるし、自分もたくさん assertion を並べたことがある…。

これを解決するプラクティスは「One Assertion Per Test 原則」と語られていた。そのまま過ぎるけど、そういうことである。