2016-06-06 2 views
4

안녕 내 Symfony3 프로젝트의 모든 설치 phpunit을 내가 내 터미널 빈/phpunit을 -c 응용 프로그램에서에서 실행할 때이 오류가 얻을 :Symfony3 phpunit을 XML을

Could not load XML from empty string 

가 봤하고 내가 앱에 필요한 밝혀졌다를 있습니다 할 수 그래서 지금

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

<!-- http://www.phpunit.de/manual/current/en/appendixes.configuration.html --> 
<phpunit 
     backupGlobals    = "false" 
     backupStaticAttributes  = "false" 
     colors      = "true" 
     convertErrorsToExceptions = "true" 
     convertNoticesToExceptions = "true" 
     convertWarningsToExceptions = "true" 
     processIsolation   = "false" 
     stopOnFailure    = "false" 
     syntaxCheck     = "false" 
     bootstrap     = "autoload.php" > 

    <testsuites> 
     <testsuite name="Project Test Suite"> 
      <directory>../src/*/*Bundle/Tests</directory> 
      <!--directory>../src/*/Bundle/*Bundle/Tests</directory--> 
     </testsuite> 
    </testsuites> 

    <!-- 
    <php> 
     <server name="KERNEL_DIR" value="/path/to/your/app/" /> 
    </php> 
    --> 

    <filter> 
     <whitelist> 
      <directory>../src</directory> 
      <exclude> 
       <directory>../src/*/*Bundle/Resources</directory> 
       <directory>../src/*/*Bundle/Tests</directory> 
       <!--directory>../src/*/Bundle/*Bundle/Resources</directory> 
       <directory>../src/*/Bundle/*Bundle/Tests</directory--> 
      </exclude> 
     </whitelist> 
    </filter> 

</phpunit> 

를 잘 작동하지만 난이 열려 답을 찾을 수 없습니다 질문 : 내 응용 프로그램/디렉토리에 phpunit.xml 파일 그래서 나는했고, 그것은 다음과 같습니다

  1. PHP 단위가이 파일을 필요로하는 이유 파일에 phpunit이 어디에서 테스트를 찾을 수 있는지 보여줄 수 있지만이 모든 것입니까?

  2. 이 파일을 수동으로 생성했습니다. 터미널 명령과 같이 자동으로 생성하는 방법이 있습니다.

  3. 지금까지 <whitelist>은 phpunit이 '보게'허용 된 곳입니까? <exlude> phpunit은 'look'을 허용하지 않습니다. 그렇다면 왜 이 <exlude>에 해당하는지 테스트 할 수 있습니다. 첫 번째 질문에 대한

답변

1

:

  1. 이 구성 파일입니다. PHPUnits 동작을 사용자 정의 할 수 있습니다. 파일의 전체 설명은 the docs을보십시오.
  2. Symfony의 기본 설치는 루트 디렉토리에 phpunit.xml.dist 파일 (See the repository)을 포함합니다. 이 경우 .dist은 Symfony가 제안한 표준이며 사용자의 요구에 맞게 변경할 수 있음을 의미합니다. parameters.yml.dist 파일을 사용하여 동일한 작업을 수행했을 수도 있습니다. 간단히 복사하여 phpunit.xml으로 이름을 지정하고 매개 변수를 현재 환경에 맞게 조정하십시오. phpunit.xml 파일을 VCS에 체크인하지 않도록하십시오. 따라서 환경 특정 변경은 코드를 실행하는 다른 시스템을 방해하지 않습니다.
  3. <whitelist><exclude> 요소는 considered by PHPUnit or ignored 인 파일을 정의합니다. 이 블록을 <filter> 요소 안에 추가 했으므로 PHPUnit이 코드 커버리지를 생성해야하는 모든 파일을 정의합니다. 테스트 파일은 테스트 조건에서 실제 코드가 어떻게 작동하는지에 관심이 있고 예상대로 실행되므로 테스트 파일을 제외시킵니다.

테스트가 실행되지 않는 이유는 확실하지 않습니다. 내가 2 번 지점에서 설명한대로 시도하고 phpunit 프로젝트 디렉터리에 실행하십시오. 저에게 그것은 상자에서 완벽하게 작동했습니다.

+0

매우 유용한 정보를 제공해 주셔서 감사합니다. 그것은 지금 작동하지만 나는 이동해야합니다 ./ 루트 디렉토리에서 phpunit.xml.dist의 이름을 app 디렉토리로 변경해야합니다. 이유는 무엇입니까? 또한 phpunit.xml shouldynt를 VCS only phpunit.xml.dist로 커밋해야하며 프로젝트가 복제되면 composer update는 phpunit.xml을 기반으로 phpunit.xml을 설치합니다. – John

+0

반가워요. 예. 정확히'.dist' 만 커밋합니다. 자동 이름 바꾸기의 경우 스크립트를 사용해야 할 것입니다. [Incenteev/ParameterHandler] (https://github.com/Incenteev/ParameterHandler)를보십시오. Symfony2'parameters.yml.dist' 파일에 사용되는 번들입니다. – ferdynator

5

새로운 symfony3 디렉토리 구조를 사용하면 PHPUnit 구성 파일이 프로젝트의 루트에 있으므로 더 이상 -c 매개 변수 (구성)를 지정할 필요가 없습니다. 그래서 당신은 다음과 같이 간단하게 시작할 수 있습니다 :

>bin/phpunit 

희망이 도움

0

@Matteo 말처럼 Symfony3 디렉토리 구조가 변경되었습니다.

내 경우에 발견, 난 단지 Symfony3의 루트 디렉토리로 변경하고 실행해야합니다 :

"phpunit.xml.dist"의 기본 설정 파일은 자동으로 Symfony3 디렉토리 구조에 생성됩니다
phpunit -c phpunit.xml.dist 

, 필요에 따라 수정할 수 있습니다. 방금 위 내용이 내 시스템에서 실행되는지 확인했습니다.