2016-03-05 20 views
34

Tôi muốn sử dụng PHPUnit để tạo báo cáo bảo hiểm mã. Tôi đã thử rất nhiều cài đặt cài đặt được tìm thấy trên web. Nhưng dường như không có gì hiệu quả.Laravel 5: PHPUnit và không có trình điều khiển bảo hiểm mã có sẵn

Tôi sử dụng phiên bản mới nhất của Laravel 5 (> 5.2) và PHPUnit v. 5.0.10. Hơn nữa, tôi sử dụng MAMP trên Mac OS X 10.9.5 chạy PHP 7.

Khi tôi chạy PHPUnit được tích hợp trong bản phân phối Laravel của tôi, tôi nhận được lỗi sau.

$ vendor/bin/phpunit -v 
PHPUnit 5.0.10 by Sebastian Bergmann and contributors. 

Runtime:  PHP 7.0.0 
Configuration: /Applications/MAMP/htdocs/myProject/phpunit.xml 
Error:   No code coverage driver is available` 

tập nhà soạn nhạc của tôi trông giống như:

"require-dev": { 
    "fzaninotto/faker": "~1.4", 
    "mockery/mockery": "0.9.*", 
    "phpunit/phpunit": "5.0.*", 
    "phpunit/php-code-coverage": "^3", 
    "symfony/css-selector": "2.8.*|3.0.*", 
    "symfony/dom-crawler": "2.8.*|3.0.*" 
}, 

Tôi cũng đã thử các lệnh sau:

/Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v 

Điều này dường như thiết lập trình điều khiển mã số bảo hiểm tốt, nhưng nó kết thúc trong một ngoại lệ:

$ /Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v 
PHPUnit 5.0.10 by Sebastian Bergmann and contributors. 

Runtime:  PHPDBG 7.0.0 
Configuration: /Applications/MAMP/htdocs/myProject/phpunit.xml 

[PHP Fatal error: Uncaught ErrorException: include(/Applications/MAMP/htdocs/myProject/app/Exceptions/Handler.php): failed to open stream: Too many open files in /Applications/MAMP/htdocs/myProject/vendor/composer/ClassLoader.php:412 
Stack trace: 
... 

phpunit.xml trông giống như sau:

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit backupGlobals="false" 
    backupStaticAttributes="false" 
    bootstrap="bootstrap/autoload.php" 
    colors="true" 
    convertErrorsToExceptions="true" 
    convertNoticesToExceptions="true" 
    convertWarningsToExceptions="true" 
    processIsolation="false" 
    stopOnFailure="false"> 
    <testsuites> 
     <testsuite name="Application Test Suite"> 
      <directory>./tests/</directory> 
     </testsuite> 
    </testsuites> 
    <logging> 
     <log type="coverage-html" target="./tests/codeCoverage" charset="UTF-8"/> 
    </logging> 
    <filter> 
     <whitelist> 
      <directory suffix=".php">app/</directory> 
     </whitelist> 
    </filter> 
    <php> 
     <env name="APP_ENV" value="testing"/> 
     <env name="CACHE_DRIVER" value="array"/> 
     <env name="SESSION_DRIVER" value="array"/> 
     <env name="QUEUE_DRIVER" value="sync"/> 
    </php> 
</phpunit> 

Có thể sử dụng PHPUnit đi kèm với khuôn khổ Laravel cùng với mã vùng không? Tôi nên thiết lập và sử dụng nó như thế nào?

Cảm ơn rất nhiều sự giúp đỡ của bạn.

Trả lời

50

Có vẻ như bạn đang thiếu tiện ích mở rộng Xdebug. Nếu bạn đang sử dụng homebrew, bạn có thể cài đặt nó như:

brew install php70-xdebug 

Sau đó, đừng quên chỉnh sửa tệp php.ini của bạn để bật phần mở rộng.

php -i | grep xdebug 

Sau khi kiểm tra Xdebug được kích hoạt bạn sẽ có thể để làm mã số bảo hiểm

+2

tôi đã sử dụng homebrew để cài đặt Xdebug. Làm thế nào để kích hoạt phần mở rộng trong php.ini? Tôi đã bật dòng sau 'zend_extension = "/ Applications/MAMP/bin/php/php7.0.0/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so" '. Đường dẫn hợp lệ. Tôi biết nó không phải là đường dẫn đến xdebug đã được cài đặt bởi homebrew. Nhưng homebrew đã cài đặt xdebug ở đâu? Tôi không thể tìm thấy nó trên hệ thống của tôi. – LaDude

+1

Sử dụng php -i | grep php.ini để xem tập tin php.ini được tải cấu hình của bạn ở đâu. Sau khi bạn đã tìm thấy nó, chỉ cần thêm vào cuối của tập tin dòng bạn cung cấp ở trên. Trong trường hợp của tôi homebrew cài đặt phần mở rộng trong zend_extension = "/ usr/local/opt/php70-xdebug/xdebug.so" – Nenad

+2

Nó hoạt động ngay bây giờ. Tôi đã sử dụng ứng dụng xdebug đã được cài đặt bởi homebrew. Tôi thực sự đã chỉnh sửa tệp php.ini sai nằm trong '/ Applications/MAMP/conf/php7.0.0'. Sau khi chỉnh sửa tệp php.ini đúng nằm tại '/ Applications/MAMP/bin/php/php7.0.0/conf' và khởi động lại máy chủ web MAMP, phpunit bây giờ chạy phạm vi mã. Cảm ơn bạn đã giúp đỡ. – LaDude

2

Cập nhật cho PHP 7.1

Xdebug là điều cần thiết cho tra cứu mã và bảo hiểm, vì vậy Xdebug là phải để được được cài đặt hoặc được kích hoạt trong môi trường thử nghiệm. Xdebug trong môi trường sản xuất không phải là có thể đề nghị, nó sẽ ảnh hưởng đến hiệu suất nếu bạn bật

brew install php71-xdebug

Các vấn đề liên quan