仅执行 JUnit 测试的 Ant 任务不运行测试



我正在尝试创建一个ant目标,它只在项目上运行JUnit测试,而不需要任何其他先前的操作(不依赖)。我使用Emma在另一个目标中植入这些,然后我有另一个目标在这些植入的类上进行字节码突变。所有这些都在工作,并且在执行了插装/突变步骤之后,我可以让JUnit在该目标中运行,但是我需要能够单独运行JUnit测试,而不是这个编译-工具-突变链。

我已经建立了一个目标,看起来像这样:

<target name="mutant-test-run" description="Run tests with mutation applied">
    <path id="run.classpath">
        <pathelement location="${out.dir}" />
    </path>
    <mkdir dir="${reports}" />
    <junit printsummary="yes" fork="true">
        <classpath>
    <pathelement location="${out.instr.dir}" />
        <path refid="junit.classpath" />
    <path refid="famaLib.classpath" />
    <path refid="run.classpath" />
    <path refid="emma.lib" />
    </classpath>
        <jvmarg value="-Demma.coverage.out.file=${coverage.dir}/coverage.emma" />
        <jvmarg value="-Demma.coverage.out.merge=true" />
        <formatter type="plain" />
        <formatter type="xml" />
        <batchtest todir="${reports}">
            <fileset dir="${src.dir}">
                <include name="test1.java" />
                <include name="test2.java" />
                <include name="test3.java" />
                <include name="test4.java" />
                <include name="test5.java" />
            </fileset>
        </batchtest>
    </junit>
    <emma enabled="${emma.enabled}">
        <report sourcepath="${src.dir}" sort="+block,+name,+method,+class" metrics="method:70,block:80,line:80,class:100">           
            <fileset dir="${coverage.dir}">
                <include name="*.emma" />
            </fileset>
            <!-- for every type of report desired, configure a nested
         element; various report parameters can be inherited from the parent <report>
         and individually overridden for each report type:-->
            <txt outfile="${coverage.dir}/coverage.txt" depth="package" columns="class,method,block,line,name" />
            <xml outfile="${coverage.dir}/coverage.xml" depth="package" />
            <html outfile="${coverage.dir}/coverage.html" depth="method" columns="name,class,method,block,line" />
        </report>
    </emma>
</target>

目标中的jUnit任务没有执行,我得到的只是mkdir任务和emma任务的输出。

<>之前m1> ${ANT_HOME}/bin/ant -f nnbuild.xml -verbose mutant-test-runApache Ant(TM) 1.8.2版本于2011年7月5日编译构建文件:/nnbuild.xml在/usr/lib64/jvm/Java -1.6.0-sun-1.6.0/jre中检测到Java版本为1.6检测操作系统:Linux解析buildfile(省略路径)/nnbuild.xml与URI = file:(省略路径)/nnbuild.xml项目基目录设置为:(省略的路径)解析构建文件jar:file:(省略ANT_HOME路径)/ant/lib/ant.jar!(省略ANT_HOME路径)/ant/antlib.xml with URI = jar:file:(省略ANT_HOME路径)/ant/lib/ant.jar!/org/apache/tools/ant/antlib.xml从zip文件为目标构建序列' mutant-test-run'是[mutant-test-run]完整的构建顺序是[突变-测试-运行,艾玛,清理,init,编译,运行,艾玛-运行,合并,所有,索菲亚,]mutant-test-run:[mkdir]跳过(省略路径)/报告,因为它已经存在。[emma] [emma v2.0, build 5312 (2005/06/12 19:32:43)][报告]处理输入文件…在48毫秒内读取并合并1个文件【报告】nothing to do:没有在任何数据文件中找到运行时覆盖率数据构建成功总时间:0秒m1>之前

如何将ant目标设置为只执行JUnit测试?

看起来你的文件集是错误的batchtest元素,我想也许你需要包括一个**:

<batchtest todir="${reports}">
    <fileset dir="${src.dir}">
        <include name="test1.java" />
        <include name="test2.java" />
        <include name="test3.java" />
        <include name="test4.java" />
        <include name="test5.java" />
    </fileset>
</batchtest>

页中的示例JUnit Task,您可以使用:

<batchtest fork="yes" todir="${reports.tests}">
    <fileset dir="${src.tests}">
        <include name="**/*Test*.java"/>
        <exclude name="**/AllTests.java"/>
    </fileset>
</batchtest>

其中**表示在任何子目录中。

另一个例子:

<batchtest todir="${collector.dir}" unless="hasFailingTests">
    <fileset dir="${collector.dir}" includes="**/*.java" excludes="**/${collector.class}.*"/>
</batchtest>

相关内容

  • 没有找到相关文章

最新更新