使用groovy AST转换时的代码覆盖率指标

时间:2013-09-18 18:56:31

标签: unit-testing groovy annotations code-coverage abstract-syntax-tree

我们在groovy代码中使用了几个AST变换,例如@ToString@EqualsAndHashCode。我们使用这些,所以我们不必维护和测试它们。问题是代码覆盖率指标(现在使用jacoco但是如果有帮助则可以改变)不知道这些是自动生成的方法,它们会导致大量代码出现,尽管它们实际上并不是我们编写的代码。

有没有办法在任何工具中包含覆盖率指标?

我想你可能会争辩说,既然我们正在添加注释,我们仍然应该测试生成的代码,因为单元测试不应该关心这些方法是如何创建的,而只是它们的工作原理。

1 个答案:

答案 0 :(得分:2)

我遇到了与@Log及其插入代码的条件类似的问题。据报道(cobertura)缺乏分支覆盖率。

但正如你所说:它只是正确报告。代码未涵盖。

如果您不需要代码,则不应该生成代码。如果你需要它并且瞄准完整的测试覆盖范围,你必须测试它或者至少“运用”它,即使在没有断言的情况下以某种方式从你的测试用例中使用它。

从测试方法的角度来看,不覆盖生成的代码与使用排除模式同样有问题。从务实的角度来看,你可能只想和它一起生活。