Использование Emma для JUnit в ant build.xml

Я новичок в использовании Эммы. Я пытаюсь добавить задачу emma ant для тестового примера JUnit для модулей в проекте EAR. У меня здесь мало вопросов.

  • Должен ли я использовать инструментальный класс для упаковки моего проекта EAR?
  • Как лучше добавить задачу emma ant для junit? Что мне следует использовать: emmarun: режим на лету или автономный режим? Должен ли я использовать вилку для JUnit или без нее?

Я использую автономный режим Emma и Junit с вилкой. Вот мой build.xml

<!--Target and task for EMMA -->
<taskdef resource="emma_ant.properties" classpathref="Emma.libraryclasspath" />
<target name="emma" description="turns on EMMA's instrumentation/reporting" >
    <property name="emma.enabled" value="true" />
    <mkdir dir="${out.instr.dir}" />
    <property name="emma.filter" value="" />
 </target>

<target name="test" depends="init, compile" description="Run JUnit Test cases under emma environment">
    <!-- Emma instrumentation -->
    <emma enabled="${emma.enabled}" verbosity="verbose">
        <instr instrpath="${class.dir}"
                     destdir="${out.instr.dir}"        
                     metadatafile="${coverage.dir}/metadata.em"
                     merge="true" 
                     mode="copy">
            <filter value="${emma.filter}" />
        </instr>
    </emma>

    <!-- JUnit Start -->
    <junit printsummary="yes" fork="yes">
        <test name="com.hf.platform.authorizer.WebTxnAuthorizerTest" todir="${test.report.dir}">
            <formatter type="xml"/>
        </test>
        <classpath>
            <path refid="HFPlatformWeb.classpath"/>
            <path refid="Emma.libraryclasspath"/>
        </classpath>
        <jvmarg value="-Demma.coverage.out.file=${coverage.dir}/coverage.ec" />
        <jvmarg value="-Demma.coverage.out.merge=false" />
    </junit>
    <!-- Junit End -->

    <emma enabled="${emma.enabled}" verbosity="verbose">
        <report>
            <sourcepath>
                <dirset dir="${basedir}">
                    <include name="src"/>
                    <include name="test-src"/>
                </dirset>
             </sourcepath>
            <fileset dir="${coverage.dir}">
                <include name="*.em"/>
                <include name="*.ec"/>
            </fileset>
        <xml outfile="${coverage.report.dir}/report.xml" />
        <txt outfile="${coverage.report.dir}/report.txt" />
        <html outfile="${coverage.report.dir}/report.html" />
        </report>
    </emma>

</target>

Когда я запускал его для одного теста, он не генерировал никаких отчетов. Но когда я запускал тот же модульный тест с EclEmma, ​​он дает правильный результат.


person subhashlg26    schedule 10.04.2012    source источник
comment
eclEmma использует jacoco, что отчасти никогда не подходит для покрытия кода, в котором также есть ant задания.   -  person oers    schedule 12.04.2012


Ответы (1)


В приведенном выше примере нам нужно убедиться, что следующие две вещи

  1. Путь к файлу метаданных и отчету о покрытии, который является файлом .ec, .em или .emma, должен быть абсолютным или относительным по отношению к проекту. например
  2. Для выполнения задачи java / junit, зажатой между задачами инструментария и отчета, она должна использовать путь к файлу инструментированного класса. например

    <classpath> <pathelement location="${out.instr.dir}" /> <path refid="Emma.libraryclasspath"/> <path refid="HFPlatformEJB.classpath"/> </classpath>

person subhashlg26    schedule 23.04.2012