java - try-with-resource 单元测试覆盖率

标签 java unit-testing

我想问一下您是否有任何技术可以用单元测试覆盖 try-with-resource。我正在使用它打开一些流,eclemma 向我展示我在这个 try-with-resource block 上发现了分支。我知道这个 block 显然在编译后被翻译成其他东西,但这是否意味着如果我使用它我就不能 100% 覆盖 emma? 你有什么技巧来处理这个问题吗?我 100% 喜欢我的报道。

谢谢!

最佳答案

简短的回答是否定的。

长答案: 如此处所述:8 branches for try with resources - jacoco coverage possible? try-with-resource 被编译成一组非常复杂的语句,其中某些分支可能无法被每个人的代码访问。

截至目前(2014 年 10 月)Jacoco (eclemma) 不会为您过滤那些无法访问的分支,但是有一个 ticket这样做,但我不知道它是否或何时会实现。

虽然 100% 的代码覆盖率很好,但盲目遵循它并不是一个好的指标。 100% 的代码覆盖率除了让您执行所有代码行的测试外,不会告诉您任何其他信息。如果被覆盖的代码做了错误的事情或做得不够,你的代码仍然可能有错误。 多年来,我在 100% 覆盖的代码区域中发现了许多错误,因为虽然我的测试覆盖了所有语句,但我没有考虑所有边缘情况,所以我的代码在极少数情况下表现不正确。

此外,如果您的项目足够大,这些遗漏的分支几乎不会产生什么影响。如果您只有 99% 的覆盖率怎么办。

关于java - try-with-resource 单元测试覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26360245/

相关文章:

java - 在 Kotlin 中读取 ZipInputStream

java - 最新的 Base 64 和 url 编码库

entity-framework - 如何处置 Entity Framework Core 内存数据库

java - 在单元测试中等待 Platform.RunLater

node.js - Mocha 调用所有 "it"回调模拟(测试中间件)

java - 出于什么目的,人们想要在同一类的 main 中创建一个类的实例?

java - 这个 android 文档中的 getSeekableFileDescriptor() 是什么?

Java ProcessBuilder 不写换行符

ruby - 我应该使用什么策略对 ruby (rspec)中的文件进行单元测试?

javascript - 如何模拟在 AngularJS Jasmine 单元测试中返回 promise 的服务?