запускать тесты на огурец параллельно с помощью cucumber-jvm 4 - PullRequest
2 голосов
/ 22 марта 2019

Java v8.x - весна v5.x огурец v4.2.0

Я попробовал temyers/cucumber-jvm-parallel-plugin, и все работает нормально, но когда я попал на свою страницу gitihub, они объявили о прекращении использования этого плагина, поскольку b / c cucumber уже начал поддерживать поддержку параллельного запуска тестов из cucumber-jvm 4.0.0.

У меня есть существующие тесты с использованием следующих зависимостей maven.

cucumber-java v4.2.0
cucumber-junit v4.2.0
cucumber-spring v4.2.0

У меня два вопроса, которые меня смущают.

  1. Чтобы использовать cucumber-jvm, нужно ли мне изменить мои зависимости, иначе мои текущие зависимости будут работать.
  2. Могу ли я запустить параллельные тесты на огурец, просто передав параметр --parallel?

любая помощь приветствуется.

1 Ответ

3 голосов
/ 23 марта 2019

Параллельная поддержка была введена в cucumber-jvm:4.0.0. Так что ваши зависимости в порядке.

Если вы используете Maven:

Cucumber JUnit - параллельное выполнение с Maven

Cucumber JUnit поддерживает параллельное выполнение файлов объектов в нескольких потоках. Чтобы включить это с помощью maven, задайте для свойства параллельного интерфейса значение methods или both.

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <parallel>both</parallel>
                <threadCount>4</threadCount>
            </configuration>
        </plugin>
    </plugins>
</build>

Если вы используете Gralde, вам лучше использовать плагин Gradle Cucumber, поскольку Gradle не поддерживает распараллеливание на уровне подклассов. В этом случае вам не нужно cucumber-junit.

Бегун огурца Gradle - Параллельное функционирование

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

  • Опция, запускаемая из командной строки, ./gradlew cucumber --threads 4, при которой запускаются четыре параллельных потока
  • Расширение, которое устанавливает значение в вашем файле build.gradle в разделе огурцов.

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

Один из способов указать количество используемых потоков:

cucumber {
    threads = = Runtime.runtime.availableProcessors().intdiv(2) ?: 1 
}

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

...