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
Php @codecoverage重新启动无法正常工作_Php_Unit Testing_Phpunit - Fatal编程技术网

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代码