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

Cha*_*rry 7 php phpunit coding-style

我正在开发一个学习体验的个人项目,同时也要实现一个体面的代码.这种教育的一部分,并使其成为一个体面的代码,是单元测试.我最近潜入了PHPUnit及其代码覆盖工具.

我遇到了一种具有特定实现的情况,其中使用的编码标准导致代码覆盖丢失.在这个特定的例子中,打破使用的编码标准会导致代码覆盖率从88%跳到94%.

在一个方法中,我有两行,如下所示

    // .. some data validation stuff
    trigger_error('Error validating the stuff', E_USER_WARNING);
}
Run Code Online (Sandbox Code Playgroud)

数据验证和东西在这里并不重要,}是的.现在,当单元测试超过这行代码时,a PHPUnit_Framework_Error会抛出到该行之前},因为代码永远不会实际继续到大括号的末尾,所以代码覆盖率永远不会捕获该行.

如果我做

    // .. some data validation stuff
    trigger_error('Error validating the stuff', E_USER_WARNING);}
Run Code Online (Sandbox Code Playgroud)

我的代码覆盖率增加了6%.我试过设置PHPUnit_Framework_Error_Warning::$enabledfalse后来我在终端得到一个丑陋的,预期的错误消息,因为我想最终被除了我自己的单元测试的错误消息的人使用这个项目是不可接受的.另外,我真的希望我的编码风格能够始终如一地实现.代码风格的违规可能会在代码的进一步删除时跳出来,这意味着我还必须添加一个可怕的注释来解释为什么大括号被移动......可能在多个地方.

我想我的问题是:

  1. 是否有一个允许1TBS使用的PHPUnit设置,并且仍然会被测试抛出异常或触发错误直接覆盖}
  2. 遵循编码标准或提高代码覆盖率是否更为重要?(虽然提升实际上只是一个额外的翻译})

sti*_*mms 7

不要沉迷于一个数字.您知道报告的数字是错误的,并且您报告的覆盖范围比报告的要多,为什么要担心呢?更重要的是,您的测试涵盖所有有意义的代码,而不是您实现100%的代码覆盖率.

如果您觉得编码标准很重要,而且看起来很符合,那么不要牺牲数字的可读性.