为什么Cobertura似乎会切换我的Eclipse Java版本?

时间:2013-01-22 23:26:10

标签: java eclipse ant cobertura

以下是创建错误的步骤:

  1. 在Eclipse中运行我的单元测试(Cntrl-F11)。所有67人都成功并报告。
  2. 使用Ant build.xml文件,运行Cobertura任务以生成覆盖率报告。任务失败,说明单元测试失败。
  3. 当我尝试再次使用Eclipse运行单元测试时,收到以下错误:
  4. Unsupported major.minor version 51.0

    (这些症状一直存在,直到我使用Project - >在Eclipse中清理。)

    我的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>
    

1 个答案:

答案 0 :(得分:2)

Coberatura尚未改变Eclipse的Java版本。

它实际上做的是使用比用于运行Eclipse的Java版本更新的Java版本来重新编译类。 Eclipse无法加载那些.class文件。

短期解决方案是在运行Coberatura之后让Eclipse清理并重建项目......正如您目前所做的那样。

从长远来看,您应该将Eclipse更改为使用与Ant构建相同的Java版本运行,或者更改Ant构建文件,以便它不会将“.class”文件写入Eclipse工作区。或者两者都有......因为在Eclipse工作区中写东西的其他东西也会引起其他问题。