您好我正在处理通过Ant调用逐个运行测试的应用程序。在.bat文件中调用build.xml,在其中调用名为.class test的另一个文件,调用它是否有机会在Ant中进行此并行?
我的ant配置如下所示:
<target name="testexec-run-pattern" description="=> run JUnit tests by Pattern">
<mkdir dir="${junit.dir}/xml" />
<input addproperty="input.pattern" />
<echo message="Executing pattern: ${input.pattern}" />
<junit showoutput="true" printsummary="on">
<classpath refid="classpath" />
<batchtest todir="${junit.dir}/xml">
<formatter type="xml" extension=".xml" usefile="true" />
<zipfileset src="${test.jar}">
<patternset includes="${input.pattern}" />
</zipfileset>
</batchtest>
</junit>
</target>
其中patternset包含要运行的测试。我希望这些测试能够并行运行。我想我需要像foreach这样的东西才能在线程中运行所有测试。
答案 0 :(得分:2)
在Ant中,可以使用parallel
标记并行执行任务。以下是从official Apache Ant site提取的示例:
&lt; macrodef name =“dbpurge”&gt;
&lt; attribute file =“file”/&gt;
&LT;顺序&GT;
&lt; java jar =“utils / dbpurge.jar”fork =“true”&gt;
&lt; arg file =“@ {file} /&gt;
&LT; / Java和GT;
&LT; /顺序&GT;
&LT; / macrodef&GT;&lt; parallel threadCount =“4”&gt;
&lt; dbpurge file =“db / one”/&gt;
&lt; dbpurge file =“db / two”/&gt;
&lt; dbpurge file =“db / three”/&gt;
&lt; dbpurge file =“db / four”/&gt;
&lt; dbpurge file =“db / five”/&gt;
&lt; dbpurge file =“db / six”/&gt;
&lt; dbpurge file =“db / seven”/&gt;
&lt; dbpurge file =“db / eight”/&gt;
&lt;! - 重复约40次 - &gt;
&LT; /并行&GT;此示例表示使用threadCount和threadsPerProcessor属性的典型需求。旋转所有这40个任务可能会削弱系统的内存和CPU时间。通过限制并发执行的数量,您可以减少对CPU,内存和磁盘IO的争用,因此实际上可以更快地完成。这也是使用threadCount(以及可能的threadsPerProcessor)的一个很好的选择,因为每个任务都是独立的(每个新的JVM都是分叉的)并且不依赖于其他任务。
有关详细信息,请参阅official Apache Ant site。