Плагин maven surefire - запускать все тесты последовательно

По какой-то причине я не могу заставить плагин maven surefire запускать мои тесты последовательно.

Я использую mock redis (https://github.com/kstyrc/embedded-redis) в своих тестах, и он отлично работает, но я получаю такие ошибки, как

Cannot run program "/tmp/1494421531552-0/redis-server-2.8.19" (in directory "/tmp/1494421531552-0"): error=26, Text file busy

Я посмотрел и обнаружил, что это, вероятно, имеет какое-то отношение к параллельным тестам и проблематично с этим макетом.

Текущий мой мой maven выглядит так

           <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
            <configuration>
                <trimStackTrace>false</trimStackTrace>
                <useFile>false</useFile>
                <reuseForks>false</reuseForks>
                <forkCount>1</forkCount>
            </configuration>

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

Как я могу этого добиться?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
3 629
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Насколько мне известно, единственный способ обеспечить порядок модульных тестов - это расположить их в алфавитном порядке:

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

При этом, вместо этого, я думаю, вам нужно определять в каждом тесте метод @After, который останавливает mock redis (и фактически ждет, пока он не будет остановлен), чтобы новый тест мог запускать mock redis в методе @Before без конфликт

Спасибо. Есть ли способ определить для всех классов в конкретном pom NotThreadSafe? У меня есть несколько классов, которые расширяют класс BaseTest, и я хочу, чтобы все они выполнялись последовательно. Могу ли я установить NotThreadSafe в pom.xml, чтобы повлиять на все его классы?

Ofek Agmon 31.12.2018 11:28

Я думаю, что аннотация NotThreadSafe может использоваться только в коде, однако обратите внимание на это решение: stackoverflow.com/questions/24811430/…

taygetos 01.01.2019 16:41

Другие вопросы по теме