2017-12-15 11 views
-5

필자는 코드 커버리지가있는 phpunit을 실행하여 내 클래스 중 어느 것이 덜 테스트되는지 확인했습니다. PHPUnit 코드 커버리지 오 탐지?

내가 임의로 같은 DataFixtures (교리기구) 및 Admin (소나타 관리 클래스) 등 일부 폴더를 제외하고이 결과 :

enter image description here

내가 Entity 폴더가 빨간색으로 모든 것을 발견하지만, 표준 getter 및 setter가 많은 클래스 만 포함합니다. Model 폴더도 마찬가지입니다.

을 (를)을 무시하지 않고 어떻게 테스트 할 수 있습니까?

+1

getters와 setters를 많이 사용하여 클래스를 테스트하는 방법을 묻는 질문이 있습니까? 이 경우 값을 설정하고 다시 가져오고 변경되지 않았는지 검사하는 테스트를 작성할 수 있습니다. 필자는 PHP를 일반적인 방법으로 수행 할 수 있는지 잘 알지 못합니다. 그러한 검사는 대개 매우 낮은 가치를 지니 며 100 % 적용 범위를 벗어나서 사는 것이 좋습니다. – ivarni

+0

예,이 클래스는 필드, getter 및 setters가있는 엔터티입니다. 실제 방법이 테스트됩니다. 그래서 엔티티 폴더도 제외 할 수 있습니까? – StockBreak

+0

많은 데이터 객체에 대한 테스트를 작성하는 것은 엄청난 시간 낭비이지만 결국에는 제외시킬 항목이나 선택하지 않을 내용을 결정할 것입니다. 그것은 의견에 이른다. 하지만 지금 폴더를 제외해야하는지 또는 getter와 setter가 대부분인 객체를 테스트하는 방법에 대한 질문이 있는지 묻고 있습니까? – ivarni

답변

0

PHPUnit은 yer 테스트에서 주석을 사용하여 범위를 추적하는 방법 (예 : @covers@coversNothing)을 수정하는 몇 가지 방법을 제공합니다. @codeCoverageIgnore을 사용하여 코드 섹션을 적용 범위에서 제외 할 수도 있습니다. 그들에게이 문서에서 다루고 사용하는 방법 : https://phpunit.de/manual/current/en/code-coverage-analysis.html

당신이 그 일부 설정 수정 command line options를 사용할 수있는 테스트 실행 : 문제는 그 개체에 적용 범위를 제한에서 줄기하지 않는 경우

--strict-coverage   Be strict about @covers annotation usage. 
--disable-coverage-ignore Disable annotations for ignoring code coverage. 

을, 메소드가 실제로 호출되는지 여부를 확인하기 위해 테스트를 식별해야합니다. 나는 당신이 그들을 조롱했다고 생각할 수 있습니다. 그래서 그것이 그들이 보상받지 못하는 이유입니다.