ユニット・テスト・ライブラリーとして PHPUnit を使用して Eclipse をセットアップしようとして、単純なテスト・ケースを実行しようとして行き詰まってしまいました。参考までに、このチュートリアルに従って、PHPUnit/Xdebug/Makegood を使用して Eclipse をセットアップしました。指定されたガイドラインからの唯一の逸脱は、PHPUnit/Makegood 用に次の構成ファイルをセットアップしたことです。
config.xml:
<phpunit backupGlobals="true"
backupStaticAttributes="false"
cacheTokens="false"
colors="false"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
forceCoversAnnotation="false"
mapTestClassNameToCoveredClassName="false"
printerClass="PHPUnit_TextUI_ResultPrinter"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader"
strict="false"
verbose="false">
<testsuites>
<testsuite name="My Test Suite">
<directory suffix=".php">/path/to/application/tests/</directory>
</testsuite>
</testsuites>
</phpunit>
さて、問題の根本は、Makegood を使用して Eclipse から PHPUnit テストを実行できないように見えるという事実にあります。私が書いた唯一のテスト (「test.php」という名前の下の「/path/to/application/tests/」フォルダーにあります) は次のようになります ( PHPUnit マニュアルから直接取得):
<?php
class StackTest extends PHPUnit_Framework_TestCase
{
public function testPushAndPop()
{
$stack = array();
$this->assertEquals(0, count($stack));
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack)-1]);
$this->assertEquals(1, count($stack));
$this->assertEquals('foo', array_pop($stack));
$this->assertEquals(0, count($stack));
}
}
?>
テストを実行するために、「tests」フォルダーを右クリックし、Eclipse で「Run All Tests」をクリックすると、コンソールに次のように出力されます。
Sebastian Bergmann による PHPUnit 3.7.15。
/path/to/application/config.xml から読み込まれた構成
時間: 0 秒、メモリ: 5.00Mb
テストは実行されませんでした。
ここで、「path/to/application/tests/」ディレクトリで「phpunit test.php」コマンドを使用してコマンドラインからこれらのテストを実行しようとすると、次のコンソール出力が表示されます。
Sebastian Bergmann による PHPUnit 3.7.15。
.
時間: 0 秒、メモリ: 3.25Mb
OK (テスト 1 回、アサーション 5 回)
Makegoodにテストファイルの場所/テストの実行方法を正しく伝えていないことは明らかですが、これを修正する方法を特定できないようです。PHPUnit のすべてのコンポーネントが Eclipse 内でどのように組み合わされているかについて、私は間違いなく悪いメンタル モデルを持っているので、アーキテクチャの理解を助ける方法で助けていただければ幸いです。前もって感謝します!