我正在做一个个人项目来获得学习经验,同时也为了实现一个体面的代码体。这种教育的一部分,并使其成为一个体面的代码体,是单元测试。我最近潜入了PHPUnit及其代码覆盖工具。
我遇到过特定实现的情况,其中使用的编码标准导致代码覆盖率丢失。在这个特定的例子中,打破所使用的编码标准导致代码覆盖率从 88% 跃升至 94%。
在一个方法中,我有两行如下所示:
// .. some data validation stuff
trigger_error('Error validating the stuff', E_USER_WARNING);
}
数据验证和其他东西在这里并不重要; }
是。现在,当单元测试遍历这行代码时,PHPUnit_Framework_Error
会在 之前的行中抛出,因为代码实际上从未继续到结束大括号,这一行永远不会被代码覆盖捕获。
如果我这样做
// .. some data validation stuff
trigger_error('Error validating the stuff', E_USER_WARNING);}
我的代码覆盖率提高了 6%。我已经尝试将 PHPUnit_Framework_Error_Warning::$enabled
设置为 false
,但随后我在终端中收到一条丑陋的预期错误消息,因为我希望这个项目最终成为由我以外的人使用,单元测试中的错误消息是 Not Acceptable 。
此外,我真的希望我的编码风格能够得到一致的实现。代码风格违规可能会在进一步细读代码时跳出来,这意味着我还必须添加一个可怕的注释来解释为什么大括号被移动......可能在多个地方。
我想我的问题是:
- PHPUnit 是否有允许 1TBS 的设置?在
}
? 之前直接使用并仍然被抛出异常或触发错误的测试覆盖
- 遵循编码标准更重要,还是提高代码覆盖率更重要? (虽然提升实际上只是解释器经过额外的
}
)
最佳答案
不要迷恋数字。您知道报告的数字是错误的,而且您的报道比报告的多,所以为什么要担心呢?与实现 100% 的代码覆盖率相比,测试覆盖所有有意义的代码更为重要。
如果您觉得编码标准很重要,而且这个看起来很重要,那么不要为了数字而牺牲可读性。
关于php - 项目编码标准与单元测试代码覆盖率冲突怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373922/