PHPUnit 6.5.5和PHP 7.2的测试覆盖率

时间:2018-01-06 15:17:55

标签: php phpunit code-coverage xdebug

问题是没有覆盖带开关盒的线,开关盒本身正在被执行。

在Windows上测试

here is a screenshot

3 个答案:

答案 0 :(得分:3)

输出在技术上是正确的,因为PHP 7.2现在很聪明,不再需要运行case语句。我在https://derickrethans.nl/php7.2-switch.html

写了关于这些优化的文章

然而,这是不受欢迎的行为,因此Xdebug将这个“bug”修复为https://github.com/xdebug/xdebug/commit/0690bf83109228a67dfe14a9a312045435b7b774 - 这是Xdebug在GitHub上的代码的一部分,但尚未进入版本。它将成为Xdebug 2.6.0beta2。

答案 1 :(得分:0)

这可能(可能)在https://github.com/sebastianbergmann/phpunit/issues/2953中回答。

答案 2 :(得分:0)

最佳选择:pcov

这比XDebug更快。更多信息https://github.com/krakjoe/pcov

另一种选择:XDebug

XDebuyg将永远是最好的选择,因为它是社区和时间最多的选择。不好的是,与其他道路相比,它通常非常慢。不要忘记更新到最新版本;)。

phpdbg的临时解决方案

选项1.使用常量代替魔术弦。例如:

class SectionTypes
{
    public const APP = 'app';
    public const SHARE = 'share';
}

/* ... */

case ($type) {
    case SectionTypes::APP:
        /* do something */
        break;
}

选项2。使用串联。例如:

case ($type) {
    case 'app'.'':
        /* do something */
        break;
}

当然,最后一个选项很丑陋,不建议使用,但是它可以快速为您提供帮助。