これ、混じっちゃっている人が居るみたい・・・
「単体テスト」と呼ばれるテストには2種類ある。
(1)XUnit(JUnit,PHPUnit)など、入出力を操作し、「仕様書にある」
全ケースを網羅する(ブラックボックステスト)
(2)もう一つは、ソースコードの分岐・命令ないし条件組み合わせを
全部網羅する(ホワイトボックステスト)
後者は、組み込み等で言われる単体テスト。
この場合、ソースコードが出来ていないと、テスト項目がつくれない
(ソースコードの分岐に合わせてテストするのだから)
よって、テスト駆動(TDD)のように、テスト(項目)を先に作るという
単体テスト(TDDはXUnitを使う→単体テスト)はできない。
また、リファクタリングを行う場合は、ソースコードを作り直すので、
テスト項目も作り直すことになる(当然、テストもしおなおしということ
になるが、テストをするのと、回帰テストするのは、(1)、(2)共通)
事実上、(2)の方法を行う場合、テスト駆動とか、リファクタリングとか
できない。アジャイルもやりにくい(アジャイルはスプリントごとにソース
コードが変わる可能性があるので、(2)だと単体テストが終わらなくなる)。
そこで、現在、Web系では、単体テストは(1)を指し、(2)の代わりに、
網羅率を確認するテストを同時に行う。
例えば、Javaの場合は、JUnitのほかに
djunitを行い
PHPでは、
コードカバレッジの機能を使う(内部的にXDebugを使っている)
※
phpdbgだって言う人も居ます。