所以我收到了这些错误
[junit]方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V中的非法局部变量表长度17
[junit] java.lang.VerifyError:在方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest中调用分支目标11处的stackmap帧.()V在偏移量4处
[junit] java.lang.ClassFormatError:方法test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V中的非法局部变量表长度17
我想知道如何解决它......
我读过的内容:
我做了什么:
资源:
对于一些非常疯狂的原因,JUnit通过target="test"
但失败了target="emmatest"
.
这是命令提示符下的输出 java -version
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我试过设置的默认参数为我java7 JRE
来-XX:-UseSplitVerifier
从这里
参数http://iforce.co.nz/i/dvsh1eoc.n0m.png
我还试图使它投诉JDK 1.6
上Project Properties
.
投诉http://iforce.co.nz/i/4jxuj4eb.rae.png
JUnit直接测试结果(跟踪没有错误)
junit http://iforce.co.nz/i/wicrvpsi.5gw.png
我没有选择,请帮忙!:(
我有一个带有Java代码的多模块Maven设置.
我的单元测试,在其中一个模块中,在多个模块中练习代码.当然,模块具有相互依赖性,并且在测试执行之前根据需要编译所有相关模块中的代码.
那么:我如何获得整个代码库的覆盖率报告?
注意:我不是问如何在多个模块中组合测试的覆盖率结果.我问如何使用来自多个模块的检测代码在单个模块中获得测试的覆盖率.任何对前者感兴趣的人都可以参考这些 其他 问题,以及Crowne对Maven Dashboard和Sonar的建议.
我成功地使用纯Ant获得了完整的报道 .[编辑:]我将开发运行时目录中的所有jar都检测到了一个临时目录; 将临时目录添加到类路径中; 然后使用批处理测试从Ant运行测试.
Ant可以从Maven运行,但这里的挑战是无缝集成(即,将所有类路径和源路径元素从Maven自动提供给Ant),这就是为什么我没有为此目的使用Maven的工具.
关于集成测试还有其他 问题.但是,默认情况下,默认情况下,每个项目的报告仅报告同一项目中代码的覆盖率,而我的测试则在多个项目中执行代码.
该文章中的西班牙可能是相关的.这是另一篇特定于Seam的文章.
我使用的代码覆盖率工具只能生成Emma XML报告,而我需要的是Cobertura或gcov格式.是否已经存在一些进行转换的工具?如果没有,我担心我必须自己做.
当尝试使用emma:emma运行Coverage或运行maven构建时,我得到以下内容:
java.lang.IllegalStateException:无法访问方法:无法将static final [Z field packageName.ClassName.$ jacocoData设置为[Z]
所以我在网上搜索了一下,我在EclEmma网站上找到了以下内容:
我的代码使用反射.当我用JaCoCo执行它时为什么会失败?
为了收集执行数据,JaCoCo检测被测试的类,它们为类添加了两个成员:私有静态字段$ jacocoData和私有静态方法$ jacocoInit().两个成员都标记为合成.
请更改您的代码以忽略合成成员.无论如何,这也是一种很好的做法,因为Java编译器在某些情况下也会创建合成成员.
但我在网上找不到关于如何用Emma实际忽略合成成员的任何文档.
在STS中我查看了Preferences/Java/Code Coverage,我看到一个Excludes框来放置排除项(我知道我也可以将排除项放在我的POM中).
我只是想知道需要在那里排除所有合成类.
谢谢
我有以下代码构造:
try {
//some code
}
catch(CustomException custExc) {
//log
}
catch(CustomException2 custExc2) {
//log
}
catch(Exception exc) {
//log
}
finally {
//some code
}
Run Code Online (Sandbox Code Playgroud)
我编写了单元测试:第一个是在没有抛出异常时执行的情况(仅执行try块代码,最后是块代码),另外3个是其中哪个是一次覆盖每个catch块(执行try块,catch之一)阻止,最后阻止).问题是Eclipse Emma插件显示我没有覆盖finally块.任何想法为什么会发生?
我最近开始使用代码覆盖工具(特别是Emma和EclEmma),我真的很喜欢它让我了解单元测试的完整性 - 以及查看我的单元测试的代码区域的能力.一点儿打.我目前在一个没有进行大量单元测试的组织工作,我计划真正推动每个人进行单元测试和代码覆盖以及TDD,并希望转换组织.
我不确定这个问题的一个问题是我应该在多大程度上接受我的代码覆盖.例如,如果我有一个这样的类:
//this class is meant as a pseudo-enum - I'm stuck on Java 1.4 for time being
public final class BillingUnit {
public final static BillingUnit MONTH = new BillingUnit("month");
public final static BillingUnit YEAR = new BillingUnit("year");
private String value;
private BillingUnit(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
public boolean equals(Object obj) {
return value.equals(((BillingUnit) obj).getValue());
}
public int hashCode() {
return value.hashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
我写了一些简单的单元测试,以确保equals()
正常工作,getValue() …
要生成emma报告,我运行了这些命令.
1. mvn install -Pwith-emma
2. java -cp %USERPROFILE%/.m2/repository/emma/emma/2.1.5320/emma-2.1.5320.jar emma report -r xml,html -in coverage.ec -in target/coverage.em
Run Code Online (Sandbox Code Playgroud)
在运行命令之后,我能够生成emma报告,并且能够按照我的要求排除包,并且它给我全班覆盖报告.但问题是当我点击任何特定的类来查看我得到的文件报告(代码覆盖率)时:
[在源路径中找不到源文件'com/test/test.java'当我生成emma报告时.
这是关于emma-maven-plugin <的我的pom.xml条目
<profile>
<id>with-emma</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
<executions>
<execution>
<id>instrument</id>
<phase>process-test-classes</phase>
<configuration>
<filters>
<filter>-com.test.generated.ceq.*</filter>
<filter>-com.activities.*</filter>
</filters>
</configuration>
<goals>
<goal>instrument</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Run Code Online (Sandbox Code Playgroud)
检查了很多链接后我觉得命令有问题
2. java -cp %USERPROFILE%/.m2/repository/emma/emma/2.1.5320/emma-2.1.5320.jar emma report -r xml,html -in coverage.ec -in target/coverage.em
Run Code Online (Sandbox Code Playgroud)
但尝试了许多但无法解决此问题.谢谢.
嗨,我想使用maven生成emma报告.当我尝试构建报告时,它会给出此错误.
[ERROR] Failed to execute goal org.codehaus.mojo:emma-maven-plugin:1.0-alpha-3:instrument (default) on project point-repo: Execution default of goal org.codehaus.mojo:emma-maven-plugin:1.0-alpha-3:instrument failed: CONSTANT_info: invalid tag value [18] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:emma-maven-plugin:1.0-alpha-3:instrument (default) on project point-repo: Execution default of goal org.codehaus.mojo:emma-maven-plugin:1.0-alpha-3:instrument failed: CONSTANT_info: invalid tag value [18]
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:364)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:198)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native …
Run Code Online (Sandbox Code Playgroud) 我知道Android的Ant工具带有内置的Emma代码覆盖,但Emma的报告看起来越来越过时,无法轻松集成到其他报告甚至Sonar中,主要是因为Emma缺乏详细的XML报告格式.我想要实现的是
我还有其他选择吗?
编辑: 关于sonar-devel的这篇文章可能总结了Android代码覆盖支持的当前状态以及Sonar支持.叹