2012-04-23 4 views
13

ユニットテストZend Frameworkアプリケーションでロープを学習しています。これまで私はZend Frameworkで動作するようにPHPUnitを設定し、いくつかの簡単なテストケースを書き始めました。PHPUnitコードカバレッジ

私の問題は、私がphpunit.xmlのロギングタグに設定されているにもかかわらず、なぜCode Coverageが機能しないのでしょうかということです。

エラーは発生しませんが、カバレッジレポートは生成されません。

私はphpunit --coverage <dir>

を実行すると、それは動作しますが、私はPHPUnitのログセクションは以下の通りです:

<phpunit bootstrap="./application/bootstrap.php" colors="true"> 
     <testsuite name="CI Test Suite"> 
      <directory>./</directory> 
     </testsuite> 
     <testsuite name="Library Test Suite"> 
      <directory>./library</directory> 
     </testsuite> 

     <filter> 
      <whitelist> 
       <directory suffix=".php">../application/</directory> 
       <exclude> 
        <directory suffix=".phtml">../application</directory> 
        <file>../application/Bootstrap.php</file> 
        <file>../application/controllers/ErrorController.php</file> 
       </exclude> 
      </whitelist> 
      <logging> 
       <log type="coverage-html" target="./log/report" charset="UTF-8" yui="true" 
    highlight="true" lowUpperBound="50" highLowerBound="80" /> 
       <log type="testdox" target="./log/testdox.html" />  
      </logging> 
     </filter> 
    </phpunit> 

誰でもこの前に遭遇?何が問題になるのでしょうか?

+3

私のログはフィルタ内にネストされていません。少し違いがあるかもしれません。 –

答えて

23

ここに私のプロジェクトのphpunit.xmlがありますが、これはうまくいきます。ご覧のように、ロギングセクションはフィルタセクションの外にあるので、Mark Ba​​ker氏がコメントしたような問題です。私はそれを小さなプロジェクトから選んだもので、とてもシンプルです。

<phpunit bootstrap="./bootstrap.php" colors="false"> 
    <testsuite name="HSSTests"> 
     <directory>./</directory> 
    </testsuite> 

    <filter> 
     <whitelist> 
      <directory suffix=".php">d:/wamp/app_hss/</directory> 
      <exclude> 
       <directory suffix=".phtml">d:/wamp/app_hss/</directory> 
       <directory suffix=".php">d:/wamp/app_hss/tests/</directory> 
      </exclude> 
     </whitelist> 
    </filter> 

    <logging> 
     <log type="coverage-html" target="./log/codeCoverage" charset="UTF-8" 
      yui="true" highlight="true" 
      lowUpperBound="50" highLowerBound="80"/> 
     <log type="testdox-html" target="./log/testdox.html" /> 
    </logging> 
</phpunit> 

これで必要な情報はすべてPHPunit manualです。

+0

あなたは絶対に正しいです!ロギングセクションはフィルタセクション内にあってはなりません。 – stevepop

関連する問題