私はPHPUnit3.5.14を使用しており、// @codeCoverageIgnore [Start | End]で特定の部分を除いて、PHPアプリケーションの100%をカバーする一連のテストを行っています。HTMLカバレッジレポートには、100%のカバレッジが表示されます。しかし、100%のカバレッジ要件を適用するためにJenkinsに読んでもらいたいClover XMLカバレッジレポートを生成すると、無視されたすべてのコードがカバーされていないものとして表示されます。
たとえば、20個のメソッドを持つコントローラークラスがあり、そのうちの1つは次のようになります。
// @codeCoverageIgnoreStart
/**
* Gets an instance of Foo. Abstracted for testing.
*
* @param array $options The constructor argument
*
* @return Foo
*/
protected function _getFoo(array $options)
{
return new Foo($options);
}
// @codeCoverageIgnoreEnd
HTMLカバレッジレポートには、完全に無視されたものを含め、カバーされた20のメソッドが表示されます。
写真:カバレッジレポートの抜粋
しかし、Clover XMLレポートは、19/20のメソッドがカバーされていることを示しており、_getFooについては言及していません。
<class name="CampaignController" namespace="global" (...)>
<metrics methods="20" coveredmethods="19" conditionals="0" coveredconditionals="0" statements="532" coveredstatements="532" elements="552" coveredelements="551"/>
..。
<line num="592" type="stmt" count="1"/>
<line num="593" type="stmt" count="1"/>
<line num="615" type="method" name="createAction" crap="2" count="2"/>
<line num="617" type="stmt" count="2"/>
(上部の_getFoo行は596〜608行です。)
PHPUnit構成のロギングセクションは次のようになります。
<logging>
<log type="coverage-html" target="../public/build/coverage" charset="UTF-8"
yui="true" highlight="true" lowUpperBound="90" highLowerBound="100"/>
<log type="coverage-clover" target="../public/build/test-coverage.xml"/>
</logging>
Cloverカバレッジログエントリを構成する方法、またはカバレッジ無視コメントを変更して、CloverレポートがHTMLレポートと一致する100%カバレッジを示すようにする方法はありますか?