php - 项目编码标准与单元测试代码覆盖率冲突怎么办?

标签 php coding-style phpunit

我正在做一个个人项目来获得学习经验,同时也为了实现一个体面的代码体。这种教育的一部分,并使其成为一个体面的代码体,是单元测试。我最近潜入了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 。

此外,我真的希望我的编码风格能够得到一致的实现。代码风格违规可能会在进一步细读代码时跳出来,这意味着我还必须添加一个可怕的注释来解释为什么大括号被移动......可能在多个地方。

我想我的问题是:

  1. PHPUnit 是否有允许 1TBS 的设置?在 }?
  2. 之前直接使用并仍然被抛出异常或触发错误的测试覆盖
  3. 遵循编码标准更重要,还是提高代码覆盖率更重要? (虽然提升实际上只是解释器经过额外的 })

最佳答案

不要迷恋数字。您知道报告的数字是错误的,而且您的报道比报告的多,所以为什么要担心呢?与实现 100% 的代码覆盖率相比,测试覆盖所有有意义的代码更为重要。

如果您觉得编码标准很重要,而且这个看起来很重要,那么不要为了数字而牺牲可读性。

关于php - 项目编码标准与单元测试代码覆盖率冲突怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373922/

相关文章:

php - Ajax 文件上传在 Chrome 中有效,但在 Firefox 中无效

php - CodeIgniter 遇到 PHP 错误

python - 获得程序的完整结构?

PHPUnit 和 Mock 对象不起作用

php - 指定一组在单独进程中运行的 PHPUnit 测试

phpunit - CakePHP 2.0 中的集成测试

Php jquery 鼠标悬停帮助

php - 函数名前面的 & 的作用是什么?

scala - 隐式转换与类型类

php - 在延迟加载中避免条件