Любой, кто может запускать параллельные тесты: с использованием Cucumber 6.10.2 или более поздних версий, Cucumber-Spring, Junit 4.13.2 и Mavensurefire 3.0.0.M3 и выше.

Используя приведенную ниже комбинацию версий, параллельное выполнение через surefire не работает должным образом. Если поменять Cucumber на 4.8.1, то работает параллельное выполнение через surefire.

**Cucumber 6.10.2 или более поздние версии, Cucumber-Spring, Junit 4.13.2 и Maven surefire 3.0.0.M3 и выше **

Но как только огуречную версию поменять на 6.10.2, не работает. Конкретная проблема заключается в том, что сеанс веб-драйвера просачивается среди потоков или, проще говоря, несколько потоков, действующих в одном и том же сеансе веб-драйвера.

Я провел много исследований и попробовал несколько конфигураций в POM, но это не сработало: Пробная версия 1. Исключены junit-jupiter и jupiter-vintage-engine из огурца-junit, исключены junit-jupiter и jupiter-vintage-engine из огурца-Spring, добавлена ​​зависимость surefire-junit47 к плагину surefire. Пробная версия 2. Добавлен jupiter-vintage-engine в качестве зависимости от плагина surefire. Пробная версия 3. Использование Spring Boot версии 2.6.2, Cucumber 6.10.2 или более поздних версий, Cucumber-Spring, Junit 5 и surefire 3.0.0.M7

Будем признательны за любую помощь.

Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
1
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Если поменять Cucumber на 4.8.1, то работает параллельное выполнение через surefire. Но как только огуречную версию поменять на 6.10.2, не работает.

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

https://github.com/cucumber/cucumber-jvm/blob/main/CHANGELOG.md

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

Это особенность Весны! При использовании Spring вы будете использовать один и тот же контекст приложения для всех тестов.

Вы можете предотвратить это, пометив bean-компонент с помощью веб-драйвера как сценарий.

@Component
@ScenarioScope
public class WebDriverComponent {

    private WebDriver driver = // create WebDriverhere

    public WebDriver getDriver() {
        return driver;
    }

} 

https://github.com/cucumber/cucumber-jvm/tree/main/cucumber-spring#sharing-state

И если вы хотите повторно использовать WebDriver между сценариями в одном потоке, вы можете использовать локальный поток:

@Component
@ScenarioScope
public class WebDriverComponent {

    private static ThreadLocal<WebDriver> driver = ThreadLocal.withInitial( create WebDriverhere );

    public WebDriver getDriver() {
        return driver.get();
    }

} 

Спасибо, указание на @ScenarioScope действительно помогло преодолеть первоначальные препятствия, но наблюдение за проблемами с ScenarioScoping. Например, в классе pageAction, написанном на java, при использовании await().atLeast(3).until(()->pageObject.someObject.isDisplay‌​ed()); система выдает исключение с сообщением ScopeNotActive. В огурце-весне 4.8.1 это работало. Вы использовали Awaitability в какой-либо последней версии огурца-весны?

Susnigdha Chatterjee 24.11.2022 22:21

Похоже, вы пропускаете ссылки на объекты области действия сценария в контекст приложения. Было бы хорошо пройти процесс создания MCVE, а затем задать новые вопросы. stackoverflow.com/help/минимально-воспроизводимый-пример

M.P. Korstanje 24.11.2022 23:12

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