2013-11-21 5 views
0

Я пытаюсь перенести проект муравья в maven 3.1. В настоящее время у нас есть целевые показатели для каждой среды, которую мы хотим протестировать (серверы), которые выполняют один и тот же набор тестов для Chrome и Firefox. Из-за нескольких ограничений мы не можем одновременно запускать два браузера того же типа. Если я настрою плагин maven surefire для запуска 1 теста за раз, результаты будут работать. Если я тестирую два потока, в конечном итоге они начинают терпеть неудачу, поскольку один браузер выполняется несколько раз из-за медленного выполнения Firefox с нашего сайта.Ограничения параллельного тестирования Maven и ограничения ресурсов

В муравей, тест цель содержит следующее:

<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 плагина в качестве альтернативы безошибочных, но он поставляется с JUnit 3.x. Существуют ли другие возможности для запуска тестов параллельно, но сгруппированы?

+0

Перспективно JUnit 3.x является проблемой, потому что ваши тесты написаны для JUnit 4.x? –

+0

Да, у нас 400 тестов, и я бы предпочел не переключиться на junit 3. –

ответ

2

ОК - на основе вашего комментария вы хотели бы иметь возможность запускать тесты JUnit 4.x с плагином Maven Antrun, но он имеет зависимость от JUnit 3.x.

Раздел плагин в ПОМ позволяет указать зависимости, которые будут переопределять те, плагин имеет по умолчанию - это описано в 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> 
+0

Когда я пытаюсь запустить это решение, я получаю следующую ошибку «класс org.apache.tools.ant.taskdefs.optional.junit. JUnitTask не найден. –

+0

Извинения, я поставил неправильную зависимость. Я просто попробовал выше (с правильной зависимостью) с JUnit 4.x test, и он работает :-) –

+0

Спасибо, Ник. Я смог получить задачу junit, чтобы начать использовать ant build.xml, а не встраивать конфигурацию, но в остальном это именно то, что мне нужно. –

Смежные вопросы