2017-04-17 10 views
1

Laravel Homestead 환경에서 실행되는 신선한 Laravel Boilerplate이 완벽하게 실행됩니다. php -v 명령은 내가 설정 phpunit을의 코드 커버리지가 작동하는 방법을 검색 한 나에게이 정보Homestead 환경에서 코드 커버리지를 제공하기 위해 Laravel Boilerplate phpunit을 설치하는 방법

PHP 7.1.2-3+deb.sury.org~xenial+1 (cli) (built: Feb 22 2017 10:08:33) (NTS) 
Copyright (c) 1997-2017 The PHP Group 
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies 
    with Zend OPcache v7.1.2-3+deb.sury.org~xenial+1, Copyright (c) 1999-2017, by Zend Technologies 
    with blackfire v1.14.3~linux-x64-non_zts71, https://blackfire.io, by Blackfireio Inc. 

를 반환하고, 나는 그것이 작동하도록 Xdebug는 필요하였습니다. 좀더 구글을 방문하여 xDebug 확장을 가능하게하는 xon homestead 명령을 찾았습니다. 그래서 나는 그것을 실행하고, Xdebug는 확장이 새로운 php -v에서 볼 수 있듯이, 활성화 된 발견 : 나는 몇 가지 요구 사항 오류를 받고 있었기 때문에,

PHP 7.1.2-3+deb.sury.org~xenial+1 (cli) (built: Feb 22 2017 10:08:33) (NTS) 
Copyright (c) 1997-2017 The PHP Group 
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies 
    with Zend OPcache v7.1.2-3+deb.sury.org~xenial+1, Copyright (c) 1999-2017, by Zend Technologies 
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans 
    with blackfire v1.14.3~linux-x64-non_zts71, https://blackfire.io, by Blackfireio Inc. 

이 또한 내가 composer require --dev phpunit/php-code-coverage:4.0.8 (특정 버전의 PHP 코드 커버리지 종속성을 추가하는 데 필요한 최신 설치를 시도하는 동안).

은 그 때 나는 phpunit --coverage-clover=coverage.xml을 실행하고이 치명적인 오류 가지고 :

PHPUnit 5.7.19 by Sebastian Bergmann and contributors. 

PHP Fatal error: Uncaught Error: Class 'Breadcrumbs' not found in /home/vagrant/servirme/app/Http/Breadcrumbs/Backend/Access/User.php:3 
Stack trace: 
#0 /home/vagrant/servirme/app/Http/Breadcrumbs/Backend/Access.php(3): require() 
#1 /home/vagrant/servirme/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(1083): include_once('/home/vagrant/s...') 
#2 /home/vagrant/servirme/vendor/phpunit/php-code-coverage/src/CodeCoverage.php(256): SebastianBergmann\CodeCoverage\CodeCoverage->initializeData() 
#3 /home/vagrant/servirme/vendor/phpunit/phpunit/src/Framework/TestResult.php(650): SebastianBergmann\CodeCoverage\CodeCoverage->start(Object(AccessHelperTest)) 
#4 /home/vagrant/servirme/vendor/phpunit/phpunit/src/Framework/TestCase.php(860): PHPUnit_Framework_TestResult->run(Object(AccessHelperTest)) 
#5 /home/vagrant/servirme/vendor/phpunit/phpunit/src/Framework/TestSuite.php(722): PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult)) 
#6 /home/vagrant/servirme/vendor/phpunit/phpunit/src/Framework/TestSuite.php(722): PHP in /home/vagrant/servirme/app/Http/Breadcrumbs/Backend/Access/User.php on line 3 

Fatal error: Uncaught Error: Class 'Breadcrumbs' not found in /home/vagrant/servirme/app/Http/Breadcrumbs/Backend/Access/User.php on line 3 

Error: Class 'Breadcrumbs' not found in /home/vagrant/servirme/app/Http/Breadcrumbs/Backend/Access/User.php on line 3 

Call Stack: 
    0.0005  350872 1. {main}() /home/vagrant/servirme/vendor/phpunit/phpunit/phpunit:0 
    0.0736  562656 2. PHPUnit_TextUI_Command::main() /home/vagrant/servirme/vendor/phpunit/phpunit/phpunit:52 
    0.0736  562768 3. PHPUnit_TextUI_Command->run() /home/vagrant/servirme/vendor/phpunit/phpunit/src/TextUI/Command.php:116 
    0.3058 1886960 4. PHPUnit_TextUI_TestRunner->doRun() /home/vagrant/servirme/vendor/phpunit/phpunit/src/TextUI/Command.php:186 
    0.5521 1993968 5. PHPUnit_Framework_TestSuite->run() /home/vagrant/servirme/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:517 
    0.5558 1994968 6. PHPUnit_Framework_TestSuite->run() /home/vagrant/servirme/vendor/phpunit/phpunit/src/Framework/TestSuite.php:722 
    0.5598 1995536 7. PHPUnit_Framework_TestCase->run() /home/vagrant/servirme/vendor/phpunit/phpunit/src/Framework/TestSuite.php:722 
    0.5599 1995536 8. PHPUnit_Framework_TestResult->run() /home/vagrant/servirme/vendor/phpunit/phpunit/src/Framework/TestCase.php:860 
    0.5704 2003832 9. SebastianBergmann\CodeCoverage\CodeCoverage->start() /home/vagrant/servirme/vendor/phpunit/phpunit/src/Framework/TestResult.php:650 
    0.5704 2003832 10. SebastianBergmann\CodeCoverage\CodeCoverage->initializeData() /home/vagrant/servirme/vendor/phpunit/php-code-coverage/src/CodeCoverage.php:256 
    0.6267 2193768 11. include_once('/home/vagrant/servirme/app/Http/Breadcrumbs/Backend/Access.php') /home/vagrant/servirme/vendor/phpunit/php-code-coverage/src/CodeCoverage.php:1083 
    0.6278 2194104 12. require('/home/vagrant/servirme/app/Http/Breadcrumbs/Backend/Access/User.php') /home/vagrant/servirme/app/Http/Breadcrumbs/Backend/Access.php:3 

나는이 Laravel 외관과 관련된 느낌을 얻었다을,이 날 phpunit을 내 자동로드 파일을 실행하지 않는 생각으로 이어질하지만, 속성 bootstrap="bootstrap/autoload.php"은 기본적으로 phpunit.xml 파일에 있습니다.

여기에서 어디로 가야할지 잘 모르겠다.

편집 : 내 농가 버전은 신선한 상용구 설치 5.1.0

+0

적용 범위가없는 phpunit은 작동합니까? 부트 스트랩 파일에'echo "Test \ n \ n"; "를 추가하고 출력에서 ​​찾았습니까? – dbrumann

+0

예, 코드 적용 범위가 없으면 예상대로 작동합니다. 'phpunit' 명령이 정상적으로 작동하기 때문에 시도하지 않았습니다. –

답변

0

phpunit.xml 파일을 함께 제공합니다. 그 안에,이 데이터

<filter> 
    <whitelist processUncoveredFilesFromWhitelist="true"> 
     <directory suffix=".php"> 
      ./app 
     </directory> 
    </whitelist> 
</filter> 

내가 아닌 phpunit을 전문가이야와 필터 태그가, 그래서 XML을 조금 연주하고 whitelist 태그가 휴식을 일으키는 것을 발견했다. 나는 그걸 좀 더 연주했고, processUncoveredFilesFromWhitelist="true" 속성을 제거하면 phpunit 명령을 실행하고 필요한 코드 커버리지를 생성 할 수 있다는 것을 알게되었습니다.


그냥 메모.

불행히도 코드 커버 리지 테스트를 실행하는 데 약 1.5 분이 걸리지 않고이 트릭을 사용하여 코드 커버리지를 설정 한 상태에서 약 11 분이 소요됩니다.

코드 커버리지 보고서를 생성하는 것과 관련하여, 나는이 문제를 수락 한 것으로 표시하고, 나 같은 문제를 가진 누군가를 도울 수있는 것이 있으면이 질문을 업데이트 할 것입니다.