Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit 6.5.5和PHP7.2上的测试覆盖率_Php_Phpunit_Code Coverage_Xdebug - Fatal编程技术网

PHPUnit 6.5.5和PHP7.2上的测试覆盖率

PHPUnit 6.5.5和PHP7.2上的测试覆盖率,php,phpunit,code-coverage,xdebug,Php,Phpunit,Code Coverage,Xdebug,问题是没有覆盖带有开关箱的线路,开关箱本身正在执行 在windows上测试 这(可能)在中得到了回答。输出在技术上是正确的,因为PHP7.2现在很聪明,不再需要运行case语句。我写了一些关于这些优化的文章 然而,这是不必要的行为,因此Xdebug修复了这个“bug”——这是GitHub上Xdebug代码的一部分,但尚未发布。它将成为Xdebug 2.6.0beta2。最佳替代方案:pcov 这比XDebug更快。更多信息 另一种选择:XDebug Xdebuig将永远是最好的选择,因为它拥有最

问题是没有覆盖带有开关箱的线路,开关箱本身正在执行

在windows上测试


这(可能)在中得到了回答。

输出在技术上是正确的,因为PHP7.2现在很聪明,不再需要运行case语句。我写了一些关于这些优化的文章

然而,这是不必要的行为,因此Xdebug修复了这个“bug”——这是GitHub上Xdebug代码的一部分,但尚未发布。它将成为Xdebug 2.6.0beta2。

最佳替代方案:pcov 这比XDebug更快。更多信息

另一种选择:XDebug Xdebuig将永远是最好的选择,因为它拥有最多的社区和时间。糟糕的是,与其他道路相比,它通常非常慢。不要忘记更新到最新版本;)

phpdbg的临时解决方案 备选案文1。使用常量而不是神奇的字符串。例如:

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

/* ... */

case ($type) {
    case SectionTypes::APP:
        /* do something */
        break;
}
case ($type) {
    case 'app'.'':
        /* do something */
        break;
}
备选案文2。使用连接。例如:

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

/* ... */

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

当然,最后一个选项很难看,不太推荐,但它可以帮助您快速完成。

当您使用跟踪(PHP)虚拟指令的工具(例如XDebug)实现测试覆盖率工具时,会遇到这种问题,因为“case子句”不会执行。出于同样的原因,在函数体和if语句上打开和关闭大括号也会遇到类似的问题。如果您使用源代码插装来实现该工具,则不会出现这种问题。对于一直使用源代码工具的PHP测试覆盖率工具,请参阅我公司的PHP测试覆盖率工具:。