我正在尝试将ant项目迁移到maven 3.1。目前,我们针对每个要测试的环境(服务器)设定了针对Chrome和Firefox运行相同测试集的目标。由于有几个限制,我们无法同时运行两个相同类型的浏览器。如果我设置maven surefire插件一次运行1个测试,结果可行。如果我使用两个线程进行测试,最终它们会因为一次浏览器被多次执行而开始失败,因为我们的网站Firefox执行速度较慢。
在蚂蚁中,测试目标包含:
<parallel threadCount="2">
<junit fork="yes" printsummary="withOutAndErr" haltonfailure="no">
<formatter type="xml" />
<batchtest fork="true" todir="${junit.output.dir}">
<fileset dir="target/test-classes/" includes="**/TestFirefox.class">
</fileset>
</batchtest>
<classpath refid="DartSeleniumTest.classpath" />
</junit>
<junit fork="yes" printsummary="withOutAndErr" haltonfailure="no">
<formatter type="xml" />
<batchtest fork="yes" todir="${junit.output.dir}">
<fileset dir="target/test-classes/" includes="**/TestChrome.class" />
</batchtest>
<classpath refid="DartSeleniumTest.classpath" />
</junit>
</parallel>
我尝试使用antrun插件作为surefire的替代品,但它随junit 3.x一起提供。是否还有其他选项可以并行运行测试但是分组?
答案 0 :(得分:2)
好的 - 根据您的评论,您希望能够使用Maven Antrun插件运行JUnit 4.x测试,但它依赖于JUnit 3.x。
pom中的插件部分允许您指定依赖项,默认情况下将覆盖插件所具有的依赖项 - 它在POM Reference - plugins中描述
在您的情况下,这意味着您最终会得到一个如下所示的插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-junit</artifactId>
<version>1.8.4</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>test</id>
<phase>test</phase>
<configuration>
<target>
<property name="reports.tests" value="${basedir}/target/ant-test-reports"/>
<property name="compile.classpath" refid="maven.compile.classpath"/>
<property name="test.classpath" refid="maven.test.classpath"/>
<mkdir dir="${reports.tests}"/>
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<pathelement path="${compile.classpath}"/>
<pathelement path="${test.classpath}"/>
</classpath>
<formatter type="plain"/>
<batchtest fork="yes" todir="${reports.tests}">
<fileset dir="${basedir}/src/test/java">
<include name="**/*Test.java"/>
</fileset>
</batchtest>
</junit>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
你可能想要禁用Surefire插件来阻止它运行你的测试以及ANT,这可以这样做:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>