Может ли плагин surefire и отказоустойчивый систематизировать случайный порядок выполнения тестовых классов?

Похоже, что надежные и отказоустойчивые плагины выполняют тестовые классы, в то время как тесты, определенные в классе, выполняются в неопределенном порядке.

Чтобы обнаружить тесты, которые полагаются на порядок (что мы считаем плохими тестами), мы хотим заставить порядок отличаться для каждого прогона. В идеальном случае у нас был бы механизм, чтобы отключить рандомизацию или число семян, которые повторяют порядок (нужно, чтобы старый эмулятор ладонной ОС имел номер семени, который приводил последовательность случайных тестов).

Сообщите мне, знаете ли вы, как это сделать? Если нет, я думаю, я могу работать в локальной вилке, а затем отправить ее.

Спасибо

Петр

4 ответа

Некоторые из других ответов ссылаются на страницу документации surefire maven, но, как и большинство документов maven, в ней нет примеров того, как фактически указывать параметры в maven XML morass. Вот как это сделать с помощью плагина surefire:

<properties>
 <surefire.plugin.version>2.16</surefire.plugin.version>
</properties>
<build>
 <plugins>
 <plugin>
 <groupid>org.apache.maven.plugins</groupid>
 <artifactid>maven-surefire-plugin</artifactid>
 <version>${surefire.plugin.version}</version>
 <configuration>
 <runorder>random</runorder>
 </configuration>
 </plugin>
 </plugins>
</build>


Я думаю, что это больше зависит от вашей инфраструктуры unit test, а не от плагинов Surefire/Failsafe, которые просто отвечают за загрузку тестовой среды.

Уже существует вопрос о том, как запускать тесты Junit в случайном порядке (ответ заключается в использовании пользовательского класса ClassRunner):

Как я могу запустить тесты JUnit в произвольном порядке?

Эта библиотека предоставляет реализацию, если вы не хотите писать свои собственные: http://randomjunit.sourceforge.net/


Сначала мне показалось, что вы смешиваете вещи. Maven-Surefire-PLugin несет ответственность за выполнение модульных тестов, где это может быть независимо от порядка исполнения. Maven-Failsafe-plugin отвечает за экспансию интеграционных тестов, которые различны, потому что интеграционные тесты могут зависеть от порядка, который не является проблемой. Кроме того, у maven-surefire-plugin есть некоторые возможности для увеличения порядка выполнения:

http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#runOrder

На это, безусловно, повлияет используемая вами структура тестирования. В JUnit вы можете влиять на заказ только ограниченным образом. В TestNG это совершенно другая история, потому что TestNG имеет возможность определять зависимости и т.д.

Maven-Failsafe-Plugin имеет те же возможности, которые влияют на порядок выполнения.

http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#runOrder

licensed under cc by-sa 3.0 with attribution.