PHPUnit 6.5.5和PHP7.2上的测试覆盖率
问题是没有覆盖带有开关箱的线路,开关箱本身正在执行 在windows上测试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将永远是最好的选择,因为它拥有最
这(可能)在中得到了回答。输出在技术上是正确的,因为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测试覆盖率工具:。