テストコードの置き場所という問題、
長らくの悩みなんですが、皆さんどうしていますか?
どの言語でもいいのですが、例えばphpでSampleというクラスが/src/model/Sample.phpにあり、
そこにfooとbarという関数があったとします。
でfooとbarそれぞれにテストコードを書くとすると、自分の場合は
/src/model/Sample.php
/src/model/Sample_fooTest.php
/src/model/Sample_barTest.php
という配置にしています。各々のテストコードファイルの中には、その関数に対するテストケースが複数ある感じです。
(仮に同ディレクトリ方式と呼ぶことにします。)
この同ディレクトリ方式だと
メリット:
・対象となるクラスにテストコードが書かれていることを把握しやすい(書かれていない場合も把握しやすい)
・テストコードと対象クラスの行ったり来たりがらく
(・言語系によっては、プロパティや関数へのアクセス制限も回避しやすくなったりするのかな。)
デメリット:
・ソースコードディレクトリがテストコードファイルだらけになり、メインのコードを探しにくくなる。
と言ったことがあるかなと思っています。
/src/model/Sample.php
/test/model/Sample_fooTest.php
/test/model/Sample_barTest.php
のようにテストコードを大本のディレクトリから分ける方式がよく見ると思いますが、
同ディレクトリ方式のメリットを捨てがたく、、
あと、同ディレクトリ方式の別バージョンで
/src/model/Sample.php
/src/model/SampleTest/Sample_fooTest.php
/src/model/SampleTest/Sample_barTest.php
のようにテストコードディレクトリを内部に作る方法もあるかな?と思っています。
上記のいずれかの方式をベースにしつつ更に良い運用の仕方や、
何かしらツールのサポートを使う方法、
はたまた全く違う方式などで良い方法があれば教えていただきたく。
宜しくお願いします。