对聪明人的问候,
我正在使用cobertura以及 mockito & powermocktio 获取代码覆盖率。 我的机器安装了 1.7 java 版本。
当我在eclipse中运行junit测试用例时,所有测试用例都会通过。 但是当我跑步时,
mvn cobertura:cobertura
我收到了以下错误。
java.lang.ClassFormatError:类中的代码长度为75567的无效方法 文件
我研究过并知道这是因为JVM为metod分配的内存大小。
我的测试类是指一个遗产类,它有一个非常庞大的静态方法。由于影响很大,我无法去触摸旧版或主类进行折射。< /强>
任何想要摆脱这个例外而不触及主类的想法都会受到赞赏。
由于 普拉迪普
答案 0 :(得分:2)
简单,从Cobertura仪器中排除遗留类。使用Maven时,如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<instrumentation>
<excludes>
<exclude>aaa/**/Legacy.class</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
答案 1 :(得分:0)
您可以尝试为您的测试环境禁用字节码验证(通过向您的JVM启动选项添加-noverify)。
当然,这不是你应该在生产环境中做的事情;但鉴于您的要求,您可能是唯一有机会获得测试+覆盖范围。
但随后:为更多丑陋的惊喜做好准备。 Powermock(ito)在打破覆盖率测量方面“很有名”。实际上,我认为你有可能让这样的设置可靠地工作并创建强大的覆盖率数字,而不是小。