代码覆盖率报告错误地指示控制器的覆盖率为100%。

3
我正在运行一系列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 行。 The report reading 100% coverage on the helper Some text at the top of one of the methods - 1099 lines in all

1
无论代码被如何调用,只要有一行被执行,它就会变成绿色。请告诉我如何执行phpunit命令以及可能的phpunit.xml文件代码。 - Gaurav
你能发布一张代码涵盖率的截图吗? - Jake N
1个回答

0

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

类是对实体中测试的类数量的报告。因此,如果您每个文件有一个类,并且测试该类的一部分,则显示为您测试了100%的类。

如果您在一个文件中有两个类,并且测试了一个类,则您将拥有50%的类覆盖率。


但是正在运行的线条颜色没有改变。它们都只是“白色”。 - Alex C
嗯,是的,那是另一个完全不同的问题。我不确定那个。就代码覆盖率配置选项而言,你使用的XML文件与我的相同。这可能是个愚蠢的问题,但你能验证一下这些行在HTML层面上是否被正确修改了吗? - Jason Lotito
只是为了再帮助一点,你会看到 lineCov 表示被覆盖的行,lineNoCov 表示未被覆盖的行,以及 lineDeadCode,它们都是 HTML 类。至少对我来说是这样。 - Jason Lotito

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接