2016-07-26 2 views
3

일부 테스트 케이스는 맞춤 테스트 라이브러리를 사용합니다. 또한이 테스트 사례는 매우 느립니다. 그래서 나는 단지 로컬 서버가 아닌 빌드 서버에서 실행하고 싶습니다. 다른 테스트를 로컬로 실행하고 싶습니다.phpunit에서 특정 테스트 제외하기

다음은 디렉토리 구조입니다. slow 디렉토리 안에있는 것들은 제외되어야하는 느린 테스트 케이스입니다.

/tests/unit-tests/test-1.php 
/tests/unit-tests/test-2.php 
/tests/unit-tests/slow/test-1.php 
/tests/unit-tests/slow/test-2.php 
/tests/unit-tests/foo/test-1.php 
/tests/unit-tests/bar/test-2.php 

@group 주석을 사용하여 그룹을 만들려고했습니다. 이 작동하지만 문제는 이러한 테스트 파일이로드되고 있다는 것입니다 (테스트는 실행되지 않습니다). 로컬에 설치되지 않은 테스트 라이브러리가 필요하기 때문에 오류가 발생합니다.

phpunit.xml 구성을 생성하는 가장 좋은 방법은 이러한 느린 테스트가 기본적으로 제외되며로드되지 않고 필요한 경우 실행할 수 있도록하는 것입니다.

답변

4

2 개 가지 옵션이 있습니다 :

1) phpunit.xml 생성이 시험 정장 - 실행할 수있는 CI 서버에 대한 하나 그래서 CI 서버에서 지역 발전

<testsuites> 
    <testsuite name="all_tests"> 
     <directory>tests/unit-tests/*</directory> 
    </testsuite> 
    <testsuite name="only_fast_tests"> 
     <directory>tests/unit-tests/*</directory> 
     <!-- Exclude slow tests --> 
     <exclude>tests/unit-tests/slow</exclude> 
    </testsuite> 
</testsuites> 

하나

phpunit --testsuite all_tests 

국지적으로

phpunit --testsuite only_fast_tests 

물론 테스트 스위트의 이름을 원하는대로 지정할 수 있습니다.

  • phpunit.xml.dist을 만들고 CI 서버 phpunit을의 기본 실행 (구성하고
  • 수정 phpunit.xml phpunit을 해당 지역 실행을 구성하여 모든 사람 단지 복제 저장소) :

    2)이 바람직 방법입니다 생각 (테스트 슈트에 <exclude>tests/unit-tests/slow</exclude>을 추가하여)

  • 버전 컨트롤에서 phpunit.xml을 제외합니다. docs에서

다음 현재 작업 디렉토리 및 --configuration에 존재 (순서에서 ) phpunit.xml 또는 phpunit.xml.dist 사용하지 않는 경우

의 구성은 해당 파일에서 자동으로 읽습니다.


일부 링크 :

The XML Configuration File. Test Suites

How to run a specific phpunit xml testsuite?

관련 문제