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

Мне нужно выполнить тесты по порядку. Я не могу найти это должным образом документированным где угодно. Я бы предпочел сделать это из командной строки. Что-то вроде

 mvn -Dtest=test1,test2,test3,test5 test

Как это сделать?

Ответы

Ответ 1

Вы не можете указать порядок выполнения ваших тестов.

Обходным путем для этого является установка параметра runOrder в алфавитном порядке.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <runOrder>alphabetical</runOrder>
    </configuration>
</plugin>

а затем вам нужно переименовать свои тесты, чтобы получить ожидаемый порядок.

Однако неплохо иметь зависимые тесты. Модульные тесты должны быть fIrst.

Ответ 2

Если вам действительно нужен порядок ваших тестов, вы должны использовать testng вместо JUnit, где вы можете определить зависимости между тестами и на основе этого конкретного порядка тестов. Я знаю, что на практике это времена, когда независимая парадигма не работает.

Ответ 3

Существует плагин Maven Surefire, который позволяет вам указать порядок тестирования.

В противном случае ваши тесты должны быть запущены в порядке, потому что они зависят друг от друга, я бы настоятельно рекомендовал против этого. Каждый тест должен быть независимым и иметь возможность запускаться сам по себе. И если каждый тест независим, то не имеет значения, в каком порядке они работают. Независимые тесты также означают, что вы можете запускать один тест повторно, не перезагружая всю тестовую цепочку. Это огромная экономия времени.

Ответ 4

Вы можете создать набор тестов, который запускает все ваши тесты и запускает их.

С junit 4: -

@RunWith(Suite.class)
@Suite.SuiteClasses({Test1.class,
                     Test2.class,
                     Test3.class,
                     Test4.class,
                     Test5.class
})
public class TestSuite
{
}

Это запустит их в правильном порядке.

Ответ 5

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

Ответ 6

У меня похожая проблема. У меня есть 3 разных комплекта (TestSetup (подготовка системы), здравомыслие и регрессия), и когда я контролирую контрольные примеры из Excel с флагами Да/Нет. Но когда я включаю все TC во всех пакетах в Excel, порядок выполнения будет случайным. Я попытался со всеми параметрами, но не повезло. Любой ценой следует сначала выполнить комплект TestSetup, а затем другие комплекты. Примечание. Процесс выполнения корректен, когда я запускаю редактор Eclipse.

Любезно помочь.