我正在运行一系列PHPunit测试,并且有一个报告100%覆盖率的控制器。
但是,在覆盖率报告中,其84行代码中只有5行标记为“绿色”

我想知道什么因素可能导致此问题?

可能引起它的一个有趣点是“间接调用”。这个特定的控制器是许多其他控制器的父级,并且由于有许多其他对象继承自该控制器,因此代码可能在其他地方被调用了……但是它会变成绿色吗?

就目前而言,唯一变绿的方法是__construct方法。

我不知道这是否足够进行,但是如果有人对单元测试如何确定覆盖率有更多的了解,我很想听听。

根据`Gaurav的评论进行编辑:

phpunit命令行为phpunit --configuration admin.xml

和admin.xml读取

 <phpunit bootstrap="./admin/applications/admin/bootstrap.php" colors="true">
     <testsuite name="AdminTestSuite">
        <directory suffix=".php">./admin/applications/admin/</directory>
        <directory suffix=".php">./admin/applications/shared/</directory>
    </testsuite>
     <filter>
         <whitelist>
            <directory suffix=".php">../admin/applications/admin/controllers</directory>
            <directory suffix=".php">../admin/applications/shared/controllers</directory>
            <directory suffix=".php">../admin/applications/shared/helpers</directory>
            <directory suffix=".php">../admin/lib/controllers</directory>
            <directory suffix=".php">../admin/lib/helpers</directory>
            <directory suffix=".php">../admin/lib/models</directory>
            <directory suffix=".php">../admin/lib/utils</directory>
         </whitelist>
         <blacklist>
                 <file>../dm_admin/applications/shared/controllers/DashboardController.php</file>
            <directory suffix=".php">../admin/lib/crons</directory>
         </blacklist>
     </filter>
     <logging>
         <log type="coverage-html" target="/projects/ut/admin/" charset="UTF-8"
             yui="true" highlight="true"
             lowUpperBound="50" highLowerBound="80"/>
         <log type="testdox-html" target="/projects/ut/admin/testdox.html" />
     </logging>
 </phpunit>


回应jakenoble:

助手正在阅读100%的覆盖率


但在里面我们看到


它持续1099行,偶尔有绿色...但没有红色。

最佳答案

代码覆盖率报告显示了三个不同的分数:类,方法和函数以及行。

类是有关实体中测试的类数的报告。因此,如果每个文件有一个类,并且测试了该类的一部分,那么它将在您测试100%的类时显示。

如果文件中有两个班级,并且测试了一个班级,则班级覆盖率将达到50%。

关于php - 代码覆盖率报告错误地指示 Controller 的100%覆盖率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4806691/

10-12 19:08