Java Cobertura未捕获反射方法调用的覆盖率

Java Cobertura未捕获反射方法调用的覆盖率,java,reflection,code-coverage,cobertura,Java,Reflection,Code Coverage,Cobertura,我有一个可以打REST电话的网络应用程序。这个webapp与cobertura工具类捆绑在一起。从REST资源中,使用反射调用公共服务API(这样做是为了克服OSGI的一些类加载问题) 现在代码覆盖率出现了问题。当我生成cobertura代码覆盖率报告时,我看到覆盖率被捕获,直到资源和所有反射公共方法调用在覆盖率中被忽略 是否有一种方法可以让反射方法调用也得到覆盖 请在下面找到代码示例 for (Method method : methods) { i

我有一个可以打REST电话的网络应用程序。这个webapp与cobertura工具类捆绑在一起。从REST资源中,使用反射调用公共服务API(这样做是为了克服OSGI的一些类加载问题)

现在代码覆盖率出现了问题。当我生成cobertura代码覆盖率报告时,我看到覆盖率被捕获,直到资源和所有反射公共方法调用在覆盖率中被忽略

是否有一种方法可以让反射方法调用也得到覆盖

请在下面找到代码示例

          for (Method method : methods) {
            if (method.getName().equals("getAbc")) {
                abc= (List<Abc>) method.invoke(**service**, serviceContextInfo);
              return SomeUtil.getSuccessResponse(abc, serviceContext);
                }
            }
for(方法:方法){
if(method.getName().equals(“getAbc”)){
abc=(列表)方法。调用(**服务**,serviceContextInfo);
返回SomeUtil.getSuccessResponse(abc,serviceContext);
}
}
覆盖率不是从核心服务调用“method.invoke”捕获的。我可以再次看到SomeUtil类中更新响应的覆盖率


注意:这是一个OSGI环境(ApacheFelix),被调用的方法位于不同的类加载器中,而不是调用它的位置。

需要了解您是否在使用任何模拟和测试框架。请给出一些示例代码。@AnindaBhattacharyya:到目前为止,我没有使用任何模拟或测试框架。我正在访问已部署的Web应用程序,试图访问各种API以查看是否捕获了相应的覆盖率。@Anindabattacharyya:请查找下面的代码示例“for(Method-Method:methods){if(Method.getName().equals(“getAbc”){abc=(List)Method.invoke(service,serviceContextInfo);return SomeUtil.getSuccessResponse(abc,serviceContext);}}'覆盖率不是从核心服务调用“method.invoke”捕获的。我可以再次看到SomeUtil类中响应被更新的覆盖率。它是否告诉您条件中的块被覆盖,例如,您是否确信“abc=…method.invoke(…)”实际上正在执行?如果没有,您确定“响应更新”不会发生在代码中的其他地方吗?@IraBaxter:是的,我确定“method.invoke()”确实正在执行。响应更新仅在SomeUtil中完成,并且正确返回响应。我还可以在SomeUtil.getSuccessresponse()方法中看到代码覆盖率。