2

ユニット・テスト・ライブラリーとして 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 内でどのように組み合わされているかについて、私は間違いなく悪いメンタル モデルを持っているので、アーキテクチャの理解を助ける方法で助けていただければ幸いです。前もって感謝します!

4

1 に答える 1

3

「Run All Tests」は、使用しようとしている方法では機能しません。「すべてのテストを実行」は、「テスト フォルダー」の 1 つとして選択したテストを実行します (以下を参照)。

ここに画像の説明を入力

実際にテストフォルダーをこれに変更しました

ここに画像の説明を入力

また、RuleData フォルダー内のテストのみを実行しました。好きな場所をクリックすると、[すべてのテストを実行] がこのように動作します。フォルダー内のテストのみを実行する場合は、[テストの実行] を選択します。

また、tests ディレクトリにある私の phpunit xml 構成もここにあります。

<?xml version="1.0" encoding="UTF-8"?>
<phpunit
         backupStaticAttributes="false"
         backupGlobals="false"
         bootstrap="./../application/third_party/CIUnit/bootstrap_phpunit.php"
         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="true"

         >
    <php>
        <ini name="memory_limit" value="2047M" />
    </php>

    <testsuites>
        <testsuite name="AllTests">
            <directory>.</directory>
        </testsuite>
    </testsuites>

    <filter>
      <blacklist>
        <directory suffix=".php">./../../</directory>
        <file></file>
        <exclude>
          <file></file>
        </exclude>
      </blacklist>
      <whitelist processUncoveredFilesFromWhitelist="true">
          <directory suffix=".php">./../application/models</directory>
          <directory suffix=".php">./../application/controllers</directory>
          <directory suffix=".php">./../application/libraries</directory>
          <directory suffix=".php">./../application/helpers</directory>
        <file></file>
        <exclude>
          <directory suffix="index.php">./../application</directory>
          <file></file>
        </exclude>
      </whitelist>
    </filter>
</phpunit>
于 2013-03-13T06:58:38.513 に答える