首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在宅基地环境下设置Laravel样板单元以提供代码覆盖

如何在宅基地环境下设置Laravel样板单元以提供代码覆盖
EN

Stack Overflow用户
提问于 2017-04-17 15:57:40
回答 1查看 570关注 0票数 1

我有一个新的Laravel样板运行在运行完美的拉勒维尔家园环境上。php -v命令返回给我这个信息

代码语言:javascript
复制
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.

我在搜索如何设置phpunit的代码覆盖率以使其工作,并发现我需要xDebug来使其工作。谷歌搜索了更多的内容,找到了支持xon扩展的xDebug more命令。因此,我运行它,并发现启用了xDebug扩展,就像一个新的php -v显示的那样:

代码语言:javascript
复制
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,得到了一个致命的错误:

代码语言:javascript
复制
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没有运行我的autoload文件,但是默认情况下,属性bootstrap="bootstrap/autoload.php"存在于phpunit.xml文件中。

不知道从这里往哪里走,不知道是怎么回事。

编辑:我的家园版是5.1.0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-19 02:41:29

新的样板安装附带一个phpunit.xml文件。在它里面,有一个过滤器标记,其中包含这些数据。

代码语言:javascript
复制
<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">
            ./app
        </directory>
    </whitelist>
</filter>

我不是PHPUnit专家,所以我稍微玩了一下whitelist,发现whitelist标记导致了它的崩溃。我更多地使用了它,并发现如果删除processUncoveredFilesFromWhitelist="true"属性,phpunit命令就能够运行并生成所需的代码覆盖率。

只是一张纸条。

不幸的是,如果没有代码覆盖率测试,运行时间通常为1.5分钟,而使用此技巧打开代码覆盖率,则测试将花费11分钟。

由于这个问题与生成代码覆盖率报告有关,我将将其标记为已接受,如果我发现可能帮助与我有相同问题的人的任何事情,我将保持此问题的更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43454890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档