最近読んだ"The Art of Unit Testing: With Examples in .net"という本がとっても良かった。Unit Testをはじめようとしているひと、運用で悩んでいる人は今すぐ読め! ってくらい良かった。

この本は、ユニットテストの基本的な考え方と基本的な書き方から始まります(Part 1)。

そして、ユニットテストで必須のテクニックである依存性の取り除きかたについて語られます(Part 2)。

その上で、ユニットテストをどう配置し走らせるか、どうやってリファクタするか、どんなふうに自動ビルドで運用するか、など実際に運用するときの考え方や方法論を解説します。そしてユニットテストのコードで陥りがちな罠(ひとつのテストにAssertion多すぎ、テストの名前が分からん、Setupに詰め込みすぎ、実行順序に依存、などなど)とその回避基準も明示します(Part 3)。

さらに、組織へのユニットテストを導入するにはどうするか(新しいことには抵抗がつきものです)を説明し、「タフ」な質問( 「これはどのくらい時間をとるの?」「これでほんとに効果がでるの?」など)にどう応えるか、回答例のカタログとともに説明します。最後の章では所謂"レガシーコード"に、どのようにユニットテストを適用していくのか、という話題に切り込みます(Part 4)。

上記で要約したとおり、「ユニットテスト」の話題に関する1から10までをカバーしてる本です。これだけ盛りだくさんで、厚さは300ページ程度と薄いのもよいです。でも内容は決して薄くないですよ。これからユニットテストを学ぶひとが最初から通読するのにはとても向いていますし、ある程度実践してるけど、いろいろうまくいっていない人(それは私)にも読み応えあります。

テスト駆動開発ベースの本や、JUnitの使い方の本はいままでもいろいろありましたが、ユニットテストの話題を網羅した、適切なサイズの本はこれまでなかったのではないかと思います。

"xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series)"や、"レガシーコード改善ガイド (Object Oriented SELECTION)"を読む前に読むのもよいのではないかと推測します(推測なのは、どっちも未だ読んでいないので...)

翻訳されていないのが惜しいです。もし誰も版権とっていないのならば、翻訳したいなー、と本気で思っています。アンオフィシャルに蠢き中ですが、既に翻訳はじまってるよ、などの情報ご存じの方いらっしゃったら教えてください。

そして、ひろってくださる出版社募集中。