テストコードは外にあるべきか

JUnitなんかを使っていると、プロダクトコードと、テストコードを別のクラスに書くのが一般的です。ですが、プロダクトコードと、テストコードはメンテが面倒くさくならないようにとか、メンテしやすいようにとかいった配慮から近いところに配置するのが望ましいという考えがあります。
なら、いっそうのこと一緒にしてしまえばよいのにと思ってみました。
TDDやっていると、どちらのコードも同じ人が書くわけですので、わざわざ分かれている必要がないですし。
詳しくはないのですが、ハードウェアの場合は、テスト用の回路が内蔵されていることが意外と多いのではないでしょうか。
テストケースに関するコードはプロダクトコードと一緒にし、TestCaseクラスをextendsしたクラスは、プロダクトコードに含まれるテストケースに関するコードを呼び出すきっかけにするイメージ。
これに近いイメージでは、KKDさんのProduct code, Leave a test!がありますが、最後は巣立っちゃうしね。