저는 PHPUnit 3.5.14를 사용하고 있으며 특정 부분을 제외한 PHP 응용 프로그램을 100 % 포함하는 테스트를 // @codeCoverageIgnore [Start | End]로하고 있습니다. HTML 적용 범위 보고서는 100 % 적용 범위를 보여줍니다. 그러나 Jenkins가 100 % 적용 범위 요구 사항을 시행하기 위해 읽으려는 클로버 XML 커버리지 보고서를 생성 할 때 모든 무시 된 코드가 표시되지 않은 것으로 표시됩니다.PHPUnit codeCoverageIgnore로 인해 HTML 및 클로버 적용 범위 보고서가 다릅니다
그림 : html로 커버리지 보고서가 덮여 완전히 무시 하나를 포함하는 20 가지 방법을 보여줍니다
// @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
:
예를 들어, I는 다음과 같습니다 중 하나 (20 개) 방법과 컨트롤러 클래스가 : 적용 범위 보고서 발췌
그러나 클로버 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 있습니다.)
<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>
I :
내 phpunit을 구성의 로깅 섹션은 다음과 같습니다 거기에 클로버 범위 로그 항목을 구성하거나 내 범위를 변경하여 코멘트를 무시하는 방법이있어 클로버 보고서가 HTML 보고서와 일치하도록 100 % 적용 범위를 표시합니까?
변경 사항은 100 % 적용 범위를 나타내는 보고서를 제공하고 해당 요구 사항을 자동화 할 수 있어야하므로 내 문제를 수정합니다. 감사합니다. 그리고 docblock 팁에 감사드립니다. 그러나이 변경 사항은 다음과 같습니다. 'metrics methods = "19"coveredmethods = "19"조건문 = "0"coveredconditionals = "0"statements = "532"coveredstatements = "532"elements = "551"coveredelements = 551 "/> 그래서 무시 된 코드는 존재하지 않는 것으로 간주하지만 HTML 보고서는이를 덮어 쓴 것으로 간주합니다. 아마 두 가지가 일치해야합니다. –
나는 충분한주의를 기울이지 않았다. 주석처럼 무시 된 코드를 죽은 코드로 처리하는 HTML 보고서를 선호합니다. 코드를 무시한다는 것은 "이 코드가 올바른 것으로 입증되었습니다."가 아니라 "이 코드를 테스트 할 수 없습니다"를 의미합니다. –
동의합니다. Sebastian이이 문제에 대해 어떻게 느끼는지 확실하지 않습니다. 나는이 문제가 결코 과거에 제기 된 적이 없다고 상상할 수 없습니다. –