如何在 Jacoco 代码覆盖率中忽略 Lombok 的@SneakyThrows?
How to ignore @SneakyThrows of Lombok in Jacoco code coverage?
我使用 JaCOCO 查看代码覆盖率(并为此使用 Intellij 插件)。我的代码中有 @SneakyThrows of lombok。由于@SneakyThrows 只是将已检查的异常转换为未检查的异常,所以我希望它不会影响代码覆盖率。
但是,它似乎降低了代码覆盖率:
我已经尝试将 lombok.addLombokGeneratedAnnotation = true
添加到我的 lombok.config
,但没有用。
感谢任何建议!
你不能忽略某个代码路径,jacoco 不支持那个(它也不能忽略一个方法)。由于缺乏更好的术语,它的度量单位是 .class
文件。由于 jacoco 查看 .class
文件,该文件是在 lombok 处理器启动后 生成的,因为它 - 你只是拥有未经测试的路径。
简而言之,jacoco
看到您的文件就像从未有过 lombok 注释一样。所以你不能“排除”注释。我感受到了你的痛苦——我们有一些模块,人们在这些模块中强制实施了大量的覆盖,而这些 catch 块几乎一直都未经测试。
我对此的解决方案是尝试模拟 objectMapper
以抛出未经检查的异常(例如:RuntimeException),然后代码流将跳入 catch 块(由 Lombok 生成)并且 @SneakyThrows 将被覆盖.
我使用 JaCOCO 查看代码覆盖率(并为此使用 Intellij 插件)。我的代码中有 @SneakyThrows of lombok。由于@SneakyThrows 只是将已检查的异常转换为未检查的异常,所以我希望它不会影响代码覆盖率。
但是,它似乎降低了代码覆盖率:
我已经尝试将 lombok.addLombokGeneratedAnnotation = true
添加到我的 lombok.config
,但没有用。
感谢任何建议!
你不能忽略某个代码路径,jacoco 不支持那个(它也不能忽略一个方法)。由于缺乏更好的术语,它的度量单位是 .class
文件。由于 jacoco 查看 .class
文件,该文件是在 lombok 处理器启动后 生成的,因为它 - 你只是拥有未经测试的路径。
简而言之,jacoco
看到您的文件就像从未有过 lombok 注释一样。所以你不能“排除”注释。我感受到了你的痛苦——我们有一些模块,人们在这些模块中强制实施了大量的覆盖,而这些 catch 块几乎一直都未经测试。
我对此的解决方案是尝试模拟 objectMapper
以抛出未经检查的异常(例如:RuntimeException),然后代码流将跳入 catch 块(由 Lombok 生成)并且 @SneakyThrows 将被覆盖.