如何解决@Timed和@SneakyThrows之间的意外交互
我们有一个Spring Boot项目,该项目使用Java的Consumer<T>
功能接口将String消息作为JSON处理。由于accept()
不允许检查过的示例,因此我们用@SneakyThrows(JsonProcessingException.class)对其进行注释。我们包含一些测试,这些测试可以验证传递null
和""
(空字符串)时是否引发了预期的异常。一切正常。
现在,我们需要向该方法添加指标。添加@Timed批注后,正在验证JsonProcessingException的测试失败,并出现意外的java.lang.reflect.UndeclaredThrowableException
。
对此我感到惊讶。 @SneakyThrows批注在编译时进行处理,因此@Timed方面不应该简单地包装该方法并重新抛出JsonProcessingException吗?我们可以做些什么来使@Timed注释像这样工作吗?
您可以在https://github.com/mrgrew/timedsneaky上找到一个演示该问题的项目。
这可能与Spring + lombok + @SneakyThrows有关,但是这些解决方案似乎建议重新编写感觉不对的测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。