2011-03-14 4 views
3

PHPUnit 3.5.10을 사용 중이고 클로버 커버리지에 대한 xml 리포트 생성에 문제가 있습니다.PHPUnit - 클로버 커버리지에 대한 PHP_Token_Stream 오류

coverage-html로 내보내기가 정상적으로 작동합니다. 또한 커버 리지 보고서에서 충분한 파일을 제외하면 clover.xml 파일이 생성됩니다. 그러나 테스트 스위트를 실행하면 "코드 적용 범위 데이터를 XML 파일에 쓰는 데 시간이 걸릴 수 있습니다."라는 메시지가 나타나고 자동으로 실행이 실패합니다. 25 회마다 "Segmentation Fault"메시지가 나옵니다.

처음에는이 문제를 PHP_CodeCoverage :: getSummary() 함수로 추적했지만 코드 허용 범위를 허용 목록으로 제한하면 프로그램에서이 오류가 발생했습니다.

다음은 코드 범위 보고서가 PHP_Token_Stream :: scan() 함수에서 시간 초과 된 것처럼 보입니다. 사실 누적 된 약 31,000 개의 토큰이 처리 된 후에는 오류 메시지없이 간단히 중지됩니다.

내가 추적 코드를 넣는 양과이 메서드가 처리 할 토큰의 수에 상관 관계가 있음을 발견했습니다. 따라서 프로그램의 메모리가 부족한 것으로 보입니다.

많은 코드 파일을로드하고 파일을 차례로로드하여 PHP_Token_Stream을 테스트하는 테스트를 만들었습니다. 이것은 예상대로 작동하는 것으로 보이며 테스트 스위트의 컨텍스트에 나타나는대로 오류를 복제하지 않습니다.

클로버 커버리지 보고서를 출력하는 방법에 대한 제안 사항이 있으십니까?

+0

얼마나 많은 파일을 수신 확인 보고서에 포함시키고 있습니까? 많은 파일이 포함되어있을 때 메모리 관리와 관련하여 php-token-stream과 관련하여 알려진 문제가 있습니다. https://github.com/sebastianbergmann/php-token-stream/issues/60 – Motin

답변

2

대부분의 우리 프로젝트의 단위 테스트는 1GB지만 코드 커버리지를 위해 2GB까지 늘려야했습니다. memory limit for PHP을 사용하여 늘리십시오.

ini_set('memory_limit', '1024M'); 
+0

감사합니다. 정확하게 필요한 부분입니다. – jonmc12

+0

@ jonmc12 - 체크 표시를 눌러 정답을 수락하십시오. :) –