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

Java 不确定如何捕获和重新分配类中的合成成员,java,mocking,mockito,jacoco,jacoco-maven-plugin,Java,Mocking,Mockito,Jacoco,Jacoco Maven Plugin,我目前正在我的项目中使用jacomaven插件。我已经用mockito编写了我的单元测试。我已经阅读了jacocofaq、googlegroups页面和jacocogithub发布的关于在单元测试类中捕获合成成员字段并重新分配它们的线程,因为jacoco注入对象不知道如何处理合成成员 然而,我的很多单元测试都是使用mockito框架进行设置和模拟的,我认为Jacoco不喜欢MockMvc对象类。我认为类本身是以某种方式使用反射实现的,这导致jacoco失败 我运行mvn测试时的错误是: org.

我目前正在我的项目中使用jacomaven插件。我已经用mockito编写了我的单元测试。我已经阅读了jacocofaq、googlegroups页面和jacocogithub发布的关于在单元测试类中捕获合成成员字段并重新分配它们的线程,因为jacoco注入对象不知道如何处理合成成员

然而,我的很多单元测试都是使用mockito框架进行设置和模拟的,我认为Jacoco不喜欢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失败,而是代码/库的失败。解决方案是更新代码或库以忽略这些成员

引述:

我的代码使用反射。为什么我用JaCoCo执行时失败了? 为了收集执行数据,JaCoCo对测试中的类进行了测试 它向类中添加了两个成员:一个私有静态字段 $jacocdata和私有静态方法$jacoinit()。两位成员 标记为合成的

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

作为一种解决方法,将类从插装中排除