2011-11-24 3 views
6

우리 프로젝트에서는 SeleniumCurl을 사용하는 다른 테스트 서버에서 페이지를 열어 테스트하는 PHPUnit 테스트를 실행하고 있습니다. 서버 B에는 웹 사이트를 실행하는 Apache 서버가 있습니다. 서버 A는 프로젝트 파일을 개발 서버 B에 동기화 (Rsync)하여 테스트 작업을 시작하므로 프로젝트 파일은 두 서버에서 동일합니다.PHP로 수집하는 원격 코드 범위

PHP 코드 커버리지 통계를 원격으로 수집하는 방법에는 어떤 것이 있습니까?

는 우리는 이미 서버 A에서 로컬로 실행 유닛 테스트에서 코드 커버리지를 수집 Xdebug를 사용

은 (phpunit을 프로젝트 파일을 직접하고 사용 할 수 있으므로 start/stop collecting code coverage report)

업데이트 : 서버 B에

웹 사이트는 Apache가 실행하는 PHP 인스턴스에 의해 렌더링됩니다. 서버 A에서 Selenium/Curl PHP 인스턴스를 사용하여 테스트를 실행하면 명령 줄 버전이 사용됩니다. 아파치는 서버 B에서 실행되는 인스턴스는 PHP 인스턴스를 프로파일 링 할 수

(타 서버를 사용하지 않는 및 셀레늄/컬을 사용하지 않는) 단위 테스트를 실행하는 경우, 우리는이 같은 명령을 사용

:

phpunit --coverage-html ./results/codecoverage/ ATestFile.php 

PHP Cli에서 Xdebug를 사용하여 "ATestFile.php"의 테스트에 대한 코드 커버리지 보고서를 생성합니다.

+0

지금까지 걸려온 문제에 대해 자세히 설명해 주실 수 있습니까? 아마 당신은 서버 B에서도 XDebug를 시작할 수 있습니다. 그렇다면 문제는 무엇입니까? –

+0

내 업데이트로 일부 질문에 대한 답변을 얻었습니까? 문제는 코드베이스/prosject 파일을 사용하여 PHP 인스턴스를 실행하는 서버 B 일 때 서버 A에서 코드 커버리지 보고서를 생성하는 것입니다. – HNygard

+0

그래서 모든 테스트가 실제로 서버 A에 의해 수행되고 있기 때문에 서버 B에서 PHPUnit을 실행하고 싶지 않습니다. XDebug는 여전히 서버 B에서 실행됩니다. 단지 PHPUnit을 사용하지 않았을뿐입니다. XDebug는 "원시"XDebug에 노출되어 PHPUnit이 어떻게 그 데이터를 수집하는지 알아 내야합니다.관심이 있으시면 비 XDebug 솔루션을 제공하여 B (그리고 관심있는 경우 시스템 A)의 서비스 데이터를 수집 할 수있게 해드릴 것입니다. –

답변

3

Github의 PHPUnit-Selenium 프로젝트에는이 문제에 대한 해결책이 있으며, PHPUnit 3.5에 내장 된 이전 버전과 동일한 기능을 제공한다고 생각합니다. PHPUnit_Extension_Selenium_TestCase folder에는 서버 B의 코드 적용 범위 정보를 캡처하는 파일이 있습니다. 각 요청에 두 개의 PHP 스크립트 (적절하게는 prepend.phpappend.php)를 추가하고 추가하려면 Apache를 설치해야합니다.

지침은 PHPUnit documentation section on Selenium에 있습니다. "append"를 검색하십시오.

+0

나는 작동하고 있습니다. 올바른 경로를 설정하고 Selenium이 쿠키를 올바르게 설정할 수없는 새로운 Firefox 8 대신 Chrome을 실행해야했습니다. 내 경험을 통합하여 답을 편집하면 문제가 있습니까? – HNygard

+0

절대 편집하십시오! :) –

1

영업 이익은 서버 B에서 phpunit을 (당신이 맞는 볼, 사용 여부) 및/또는 XDebug가 완전히 독립적 인 방식으로

우리 PHP Test Coverage Tool 수집 테스트 커버리지 데이터를 보고서를 생성 할 수 있습니다 대안을 요구 (아무튼 XDebug를 전혀 사용하지 마십시오).

이렇게하면 유용한 것으로 간주되는 모든 방법 (서버 A의 외부 요청 포함)으로 코드를 실행하고 코드 적용 데이터를 얻을 수 있습니다.

언제든지 보험 대상 코드의 스냅 샷을 요청할 수 있습니다. 테스트 커버리지 툴을위한이 디스플레이 엔진은 스냅 샷을 소스 코드에 오버레이 된 가시적 인 디스플레이로 변환하거나 요약 보고서를 생성합니다.

관련 문제