Php @codecoverage重新启动无法正常工作
我需要覆盖以下代码:Php @codecoverage重新启动无法正常工作,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我需要覆盖以下代码: switch($contract["value"]){ ... case "n": $contract["error_msg"] = "some Error"; break; ... default: $contract["error_msg"] = "Unexpected Error"; break; 它是一个捕捉错误代码并将其转换为消息的开关,但默认情况下无法使用自动测试再现,因此我尝试使用@codecoverageigno
switch($contract["value"]){
...
case "n":
$contract["error_msg"] = "some Error";
break;
...
default:
$contract["error_msg"] = "Unexpected Error";
break;
它是一个捕捉错误代码并将其转换为消息的开关,但默认情况下无法使用自动测试再现,因此我尝试使用@codecoverageignoretart
注释从代码覆盖率报告中忽略此代码,如下所示:
//@codeCoverageIgnoreStart
default:
contract["error_msg"] = "Unexpected Error";
break;
//@codeCoverageIgnoreEnd
但在运行了我的测试之后,注释对报告并没有任何影响,并且行保持未汇总
我应该如何处理这种情况?您可以使用
/**
* @codeCoverageIgnore
*/
或者你测试
Default:
//@codeCoverageIgnoreStart
contract["error_msg"] = "Unexpected Error";
//@codeCoverageIgnoreEnd
break;
从
中,自动测试无法再现默认情况
-无法对switch语句进行单元测试?我认为您看到的(完全)是错误的问题。我无法重现一个我不期望的错误,所有期望的错误都在另一个方法中处理,返回一个值进行切换,因此默认情况是当另一个方法失败时(不知道为什么,或者是否可能)主要出于此目的而存在。我现在不知道为什么codecoverageignorrestart
不起作用(例如,您应该添加一些证据来证明这一点)-但正如我第一次说的,不这样做并测试它符合您的利益。或者,你的单元测试根本不是单元测试——这是重构它们的另一个原因。堆栈溢出需要至少10个信誉才能发布屏幕快照不要忘记将代码放入代码块,否则你的答案无法读取。很抱歉,smartphohen没有看到den代码