不确定如何捕获和重新分配类中的合成成员



我目前正在我的项目中使用jacoco-maven插件。我已经用mockito编写了单元测试。我已经阅读了jacoco常见问题解答、Google Groups页面和Jacobo-github发布的关于在单元测试类中捕获合成成员字段并将其重新分配的线程,因为注入jacoco的对象不知道如何处理合成成员。

然而,我的许多单元测试都是使用mockito框架设置和模拟的,我认为Jacobo不喜欢MockMvc对象类。我认为类本身是使用反射实现的,这导致了jacoco的失败。

我运行mvn测试时的错误是:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is my.project.submodule.controller.ControllerException: Unknown property '$jacocoData'

我的触发代码片段是:

mockMvc.perform(
get("/api/substituteStuff"))
.andExpect(jsonPath("$", hasSize(10)))
.andExpect(status().isOk())

我认为类本身是以某种方式使用反射实现的,这导致了jacoco的失败。

编译器可以生成合成成员的情况很多,例如类中存在assert离子。这将导致同样的失败,所以这不是JaCoCo的失败,而是您的代码/库的失败。解决方案是更新您的代码或库以忽略此类成员。

报价http://www.jacoco.org/jacoco/trunk/doc/faq.html:

我的代码使用反射。当我使用JaCoCo执行它时,为什么它会失败

为了收集执行数据,JaCoCo对测试中的类进行了检测它为类添加了两个成员:一个私有静态字段$jacocoData和一个私有静态方法$jacocoInit()。两名成员标记为合成。

请更改代码以忽略合成成员。这很好无论如何都要练习,因为Java编译器也会创建合成成员在某些情况下。

作为一种变通方法-从检测中排除类。

相关内容

  • 没有找到相关文章

最新更新