这些是创建错误的步骤:
- 在 Eclipse (Cntrl-F11) 中运行我的单元测试。所有 67 个都成功并报告了这样。
- 使用 Ant 构建.xml 文件,运行 Cobertura 任务以生成覆盖率报告。任务失败,说明单元测试失败。
- 当我尝试再次使用 Eclipse 运行单元测试时,收到以下错误:
Unsupported major.minor version 51.0
(这些症状一直持续到我在 Eclipse 中使用 Project -> Clean 之前。
我的Cobertura蚂蚁任务是:
<target name="report-test" description="Generate a test coverage report." depends="clean, compile">
<taskdef resource="tasks.properties">
<classpath>
<pathelement location="${lib.dir}/cobertura-1.9.4.1/cobertura.jar" />
<pathelement location="${lib.dir}/cobertura-1.9.4.1/lib/asm-3.0.jar" />
<pathelement location="${lib.dir}/cobertura-1.9.4.1/lib/asm-tree-3.0.jar" />
<pathelement location="${lib.dir}/cobertura-1.9.4.1/lib/log4j-1.2.9.jar" />
<pathelement location="${lib.dir}/cobertura-1.9.4.1/lib/jakarta-oro-2.0.8.jar" />
</classpath>
</taskdef>
<cobertura-instrument todir="${build.dir}/cobertura-instrument">
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
<junit printsummary="yes" fork="true" haltonfailure="yes" showoutput="yes">
<classpath location="${build.dir}/cobertura-instrument"/>
<classpath location="${build.dir}"/>
<classpath refid="classpath.test" />
<sysproperty key="net.sourceforge.cobertura.datafile" file="cobertura.ser"/>
<formatter type="xml" />
<batchtest todir="doc/junit">
<fileset dir="${test.dir}" />
</batchtest>
</junit>
<cobertura-report srcdir="${src.dir}" destdir="doc/coverage" format="xml" />
<delete file="cobertura.ser"/>
</target>
Coberatura还没有切换Eclipse的Java版本。
它实际上所做的是使用比您用于运行 Eclipse 的版本更新的 Java 版本重新编译类。 Eclipse 无法加载这些.class文件。
短期解决方案是让 Eclipse 在运行 Coberatura 后清理并重建项目......正如您目前所做的那样。
从长远来看,您应该将 Eclipse 更改为使用与 Ant 构建相同的 Java 版本运行,或者更改 Ant 构建文件,使其不会将".class"文件写入 Eclipse 工作区。 或两者兼而有之..."因为有其他东西在Eclipse工作区中写入内容也会导致其他问题。