Я пытаюсь запустить тесты JUnit 5 параллельно, используя среду Spring.
У меня есть одноэлементный bean-компонент: WebDriver, который нужно внедрить примерно в 4 места (классы POJO). Затем тестовый класс внедрит некоторые из этих классов POJO для запуска тестовых методов. Поскольку другие тесты будут выполняться по той же модели, с тем же bean-компонентом (webdriver), когда тест заканчивается, сеанс bean-компонента завершается, а выполнение другого параллельного теста завершается ошибкой b c bean-компонент был уничтожен.
как я могу сделать одноэлементный веб-драйвер общим для каждого метода тестирования (а не для выполнения тестового костюма), чтобы для каждого сеанса тестирования существовал другой компонент веб-драйвера?
Я создал расширение, которое пытается сделать это :
public void interceptTestMethod(Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext) throws Throwable
{
ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor();
poolTaskExecutor.execute(()->
{
try
{
invocation.proceed();
}
catch (Throwable throwable)
{
throwable.printStackTrace();
}
});
poolTaskExecutor.shutdown();
poolTaskExecutor.setWaitForTasksToCompleteOnShutdown(true);
}
Это поместит все тесты в пул потоков, что сделает тест потокобезопасным (теоретически). Но bean-компонент WebDriver по-прежнему используется другими потоками для других методов тестирования.
Я пытался создать прототип webdriver, но это создает слишком много bean-компонентов при одновременном запуске 6 тестов, что приводит к сбою тестового набора.