3

ええ、これはそれらの0%カバレッジのもののもう1つです。私は以下をチェックして確認しました:

1)...プログラムが実際に適切なcobertura.serファイルを生成しており、 http: //cobertura.sourceforge.net/faq.htmlに従って、そのファイルとInstrumentedディレクトリの内容がなくなっていること。

2)...「instrumented」はCoberturaテストで識別された最初のクラスパスです。

3)...ラインが実際に私のテストスイートでテストされていること、そして...

4)...「instrumented」ディレクトリが実際に作成されて書き込まれていること-私はそれが起こるのを見ました。

奇妙なことに、Antが生成するレポートは、次のような一連のメッセージにすぎないことに気づきました。

Testcase: pluralizeIt[0] took 0.004 sec
    Caused an ERROR
Instruction type does not match stack map in method StringUtil.main([Ljava/lang/String;)V at offset 50
java.lang.VerifyError: Instruction type does not match stack map in method StringUtil.main([Ljava/lang/String;)V at offset 50
    at PluralTest.pluralizeIt(PluralTest.java:55)

しかし、すべてのCobertura参照とターゲットをコメントアウトすると、テストは正常に実行され、Antレポートは、成功と失敗に関して私が期待するものを100%提供します。

私のbuild.xmlファイルは以下にあります...何か考えはありますか?ありがとう....

<?xml version="1.0" encoding="UTF-8"?>
<project name="TestPlurazliation" default="coverage" basedir=".">
    <property name="src" location="src" />
    <property name="build" location="bin" />
    <property name="cobertura" location="/Users/Dauber/Desktop/cobertura-1.9.4.1" />
    <property name="instrumented" location="instrumented" />
    <property name="coverage.xml" location="coverage-xml" />
    <property name="coverage.html" location="coverage-html" />
    <path id="cobertura.classpath">
        <fileset dir="${cobertura}">
            <include name="cobertura.jar" />
            <include name="lib/**/*.jar" />
        </fileset>
    </path>

    <taskdef classpathref="cobertura.classpath" resource="tasks.properties" />

    <target name="init">
        <tstamp />
        <mkdir dir="${build}" />
    </target>

    <target name="compile" depends="init">
        <javac srcdir="/Volumes/Junk/Java projects/SE433/TestingPluralization/src" includeantruntime="false" debug="on" destdir="${build}">
            <classpath location="/Users/Dauber/Desktop/junit-4.10.jar" />
        </javac>
    </target>

    <target name="PluralizationTest" depends="compile">
        <junit printsummary="yes" fork="yes" haltonfailure="yes">
            <classpath location="/Users/Dauber/Desktop/junit-4.10.jar" />
            <classpath location="${build}" />
            <formatter type="plain" />
            <test name="PluralTest" />
        </junit>
    </target>

    <target name="instrument" depends="init,compile">
        <delete file="cobertura.ser" />
        <delete dir="${instrumented}" />
        <cobertura-instrument todir="${instrumented}">
            <ignore regex="org.apache.log4j.*" />
            <fileset dir="bin">
                <include name="**/*.class" />
                <exclude name="**/*Test*.class" />
            </fileset>
        </cobertura-instrument>
    </target>

    <target name="PluralizationTest2" depends="init,compile">
        <junit fork="yes">
            <classpath location="${instrumented}" />
            <classpath location="${build}" />
            <classpath location="/Users/Dauber/Desktop/junit-4.10.jar" />
            <classpath refid="cobertura.classpath" />
            <formatter type="plain" />
            <test name="PluralTest" />
        </junit>
    </target>

    <target name="coverage-report-xml">
        <cobertura-report srcdir="${src}" destdir="${coverage.xml}" format="xml" />
    </target>

    <target name="coverage-report-html">
        <cobertura-report srcdir="${src}" destdir="${coverage.html}"/>
    </target>

    <target name="coverage" depends="compile,instrument,PluralizationTest2,coverage-report-xml,coverage-report-html"  />

    <target name="clean" description="clean up" >
        <delete dir="${build}"/>
        <delete dir="${instrumented}"/>
    </target>

</project>
4

1 に答える 1

5

JDK 7 を使用している場合は、UseSplitVerifier JVM 引数を追加する必要があります。

<jvmarg value="-XX:-UseSplitVerifier"/>

(注:他の人が簡単に解決策を見つけられるように、コメントからの回答としてこれを追加しています。)

于 2014-02-04T13:42:09.307 に答える