php - 使用代码覆盖率处理无法访问的代码
问题描述
我的项目具有检查数字是否在范围内的方法
public function foo(int $number): string
{
// simple logic to get my point across
if ($number > 0) {
return 'foo';
}
if ($number === 0) {
return 'bar';
}
if ($number < 0) {
return 'baz';
}
assert(0);
}
在这个简单的示例中,函数将始终在 if 语句之一处返回。但是,使用phpunit
s 代码覆盖率,最后一个assert(0);
被标记为未执行。
作为一名程序员,我想明确指出,如果程序达到这一点是不合法的,如果达到了,那就是开发人员的错。但是,这确实会引入“无法访问”的代码,例如如果开发人员正确实现了上述逻辑,则永远不会执行。
我对达到 100% 代码覆盖率分数的解决方法不满意。这就是我现在处理它的方式:
public function foo(int $number): string
{
$value = null;
if ($number > 0) {
$value = 'foo';
}
if ($number === 0) {
$value = 'bar';
}
if ($number < 0) {
$value = 'baz';
}
return $value;
}
这是达到 100% 代码覆盖率分数的正确方法,还是我应该放弃该目标并在代码底部使用未经测试的assert(0);
/ ?throw new Exception()
解决方案
推荐阅读
- c++ - 将 Byte[]{LSB-0,MSB-0,LSB-1,MSB-1...LSB-N,MSB-N} 转换为 Int[](int-0,int-1,int-N)
- git - 推送后更新提交消息、作者和提交者
- python - 无法启动 python manager.py runserver
- c++ - c ++析构函数通过单个对象抛出异常
- c# - 如何在 UWP 中执行 MouseEvents?
- java - Solving the output for recursion being used in linkedlist
- angular - NGRX + Resolver not working: Component seems to be loading before action is done dispatching
- c# - SignalR client keeps reconnecting after request timeout
- ubuntu - 更改 platformio-ide-terminal 中文件夹的颜色
- google-oauth - Dialogflow 帐户链接中断了流程