【发布时间】:2011-06-15 22:55:32
【问题描述】:
我正在运行一系列 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 行,偶尔有绿色...但没有红色。
【问题讨论】:
-
如何调用代码并不重要。如果任何一行被执行,那么它将是绿色的。请让我知道您如何执行 phpunit 命令以及可能的 phpunit.xml 文件代码
-
你能贴一张代码覆盖率的屏幕截图吗?
标签: php unit-testing testing phpunit code-coverage