PHPUnit代码覆盖忽略了laravel控制器公共函数

时间:2016-11-22 15:54:32

标签: php laravel phpunit laravel-5.3 php-7

在当前的项目中,我们一直在努力为Laravel 5.3应用程序保持100%的测试覆盖率。前几天我发现了一些奇怪的东西。由于某种原因,在控制器中,任何未运行的代码都不会被标记为缺少测试。但是,如果我向模型添加一个函数而忘记编写一个测试,就会显示为缺少测试的代码。以下是模型的示例代码覆盖率报告:

enter image description here

以下是控制器的示例代码覆盖率报告:

enter image description here

您可以在功能测试中看到我测试在顶部调用destroy()函数的端点,但是我忘了为调用answer()的端点编写测试。为什么这不会被标记为未涵盖的代码?

简单地运行:

phpunit --coverage-html ./storage/logs/phpunit

此处还有我的phpunit.xml文件:

<?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 suffix="Test.php">./tests</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
        </whitelist>
    </filter>
</phpunit>

更新:

我想我可能已经找到了解决问题的方法。在phpunit.xml更改processUncoveredFilesFromWhitelist="true"false。不可思议的是,测试运行时间大约是运行时间的3倍,但它似乎标记了所有未执行的内容。

0 个答案:

没有答案