2012-04-20 2 views
50

나는 젠킨스와 관련 phpunit을 사용하고, 나는 내가 명령 줄에서 사용할 수 있다는 것을 알고 phpunit.xmlPHPunit에서 테스트를 건너 뛰는 방법은 무엇입니까?

XML 파일의 구성을 설정하여 특정 테스트를 건너 뛸 :

phpunit --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest

<filters> 태그는 코드 커버리지에만 해당되므로 XML 파일로 변환하려면 어떻게해야합니까?

난 당신이 전체 파일 다음

<?xml version="1.0" encoding="UTF-8"?> 

<phpunit> 

    <testsuites> 
     <testsuite name="foo"> 
      <directory>./tests/</directory> 
      <exclude>./tests/path/to/excluded/test.php</exclude> 
       ^------------- 
     </testsuite> 
    </testsuites> 

</phpunit> 
+1

KO : 테스트를 수정하면 어떨까요? btw, hi from welly ;-) – zerkms

+0

필자는 테스트를 작성하지 않았으며 관련이 없으며 코어 파일을 변경하지 않으려합니다. – Filype

+0

분명히 그렇게 할 수 있습니다. 매우 이상한 요구 사항입니다. – zerkms

답변

92

중 파손 또는 당신이 필요로하는 검사를 생략 할 수있는 가장 빠르고 쉬운 방법을 무시하고 처리 할 수있는 경우 testStuffThatAlwaysBreaks

+0

디렉토리 또는 테스트를 xml 구성 파일에 추가 할 수 있습니다. 컨트롤러 또는 이와 비슷한 컨트롤러는 수십 가지가있을 수 있으므로 실제로는별로 실용적이지 않습니다. 그 파일의 다른 테스트들. 당신이 단위 테스트에 접근 할 수 없다면, 왜 그런지 이해하지 못했을 것입니다. 그렇다면 당신은 배제하는 것 외에 다른 선택의 여지가 없습니다. – jsteinmann

+3

정적 메소드 (적어도 PHPUnit 3에서는)이고 일부 클래스는 late static binding afaik를 사용하기 때문에'$ this->'대신'static :: markTestSkipped ('');를 사용해야합니다. 그것은 새로운 PHP 버전에서 경고를 생성합니다. 서명 :'public static function markTestSkipped ($ message = '') – DanFromGermany

+0

전체 단위 테스트 파일의 더 나은 예제가 필요합니다. 스 니펫 일뿐입니다. – Ligemer

21

에서 떨어져 모든 테스트를 실행하고 싶습니다 나중에 작업을 계속하는 것은 단지 개별 단위 테스트의 상단에 다음을 추가하는 것입니다

$this->markTestSkipped('must be revisited.'); 
+0

이것이 제가 시도한 것입니다. 여전히 ''및 893 테스트가없는 893 개의 테스트가 있습니다 '' – Filype

+0

테스트를 실행하는 데 약 20 분이 걸립니다. 실행될 테스트의 수를 쉽게 확인할 수있는 방법이 있습니까? 현재 첫 번째 행이 완료 될 때까지 기다려야합니다. '....... 63/893 (7 %)' – Filype

+3

@Filype : 잘못된 경로를 지정했을 수 있습니다. 그것은 나를 위해 잘 작동합니다. 테스트 횟수를 얻는 것이 가능한지 확실하지 않습니다. 추신 : 단위 테스트가 너무 오래 실행해서는 안됩니다. '@group' 주석을 사용하고 성격에 따라 테스트를 나누는 것이 좋습니다. – zerkms

8

때로는 테 모두를 건너 유용 PHP 코드로 정의 된 사용자 지정 조건을 기반으로 특정 파일의 sts. makeTestSkipped가 작동하는 setUp 함수를 사용하면 쉽게 할 수 있습니다.

protected function setUp() 
{ 
    if (Config::getInstance()->myConfigCondition == false) { 
     $this->markTestSkipped('all tests in this file are invactive for this server configuration!'); 
    } 
} 

는 Btw는 5.2 안정적인 official documentation 당신이 인스턴스 방법이 아닌 정적 방법으로 markTestSkipped를 사용하도록 제안 phpunit을. 도중에 정의가 변경되었는지 확인하지 않았습니다.

+0

''''''''''클래스 란 무엇입니까? 나는 그것을 어디에 두어야합니까? – cronfy

+0

@cronfy 전역 적으로 액세스 가능한 모든 클래스 (싱글 톤/레지스터 디자인 패턴) 또는 phpunit의 부트 스트랩 파일에 설정된 전역 변수 일 수 있습니다. 기본적으로 논리는 : if ($ testsFromThisFileShouldBeSkipped) {$ this-> markTestSkipped (...); } –

관련 문제