#junit #junit5 #maven-surefire-plugin
Вопрос:
Я делаю свои первые шаги в тестировании, так что не будьте строги.
Как я могу использовать свой пользовательский прослушиватель в JUnit 5, если я использую плагин Apache Surefire для запуска своих тестов? Это легко проверить, потому что я могу использовать аннотацию @Listeners
или написать свой слушатель в формате .xml с набором тестов. Это Джунит, я не могу найти рабочее решение.
Мой пользовательский слушатель:
public class OnrTestListener implements TestExecutionListener {
private static final Logger LOG = LogManager.getRootLogger();
@Override
public void executionSkipped(TestIdentifier testIdentifier, String reason) {
LOG.info("SKIPPED Test by reason: {}", reason);
}
@Override
public void executionStarted(TestIdentifier testIdentifier) {
LOG.info("Test {} successfully started.", testIdentifier.getDisplayName());
}
@Override
public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
if (testExecutionResult.getStatus() != TestExecutionResult.Status.SUCCESSFUL) {
String message = "Page screenshot.";
File screenshot = ScreenshotUtils.takeScreenshot();
ScreenshotUtils.attachToReportPortal(message, screenshot);
}
}
Скриншоты моего дополнительного класса
public class ScreenshotUtils {
private static final OnrLogger LOG = new OnrLogger();
private ScreenshotUtils() {
}
public static void attachToReportPortal(String message, File screenshot) {
ReportPortal.emitLog(message, "info", new Date(), screenshot);
}
public static File takeScreenshot() {
return ((TakesScreenshot) DriverFactory.getDriver()).getScreenshotAs(OutputType.FILE);
}
}
Мои тесты отметили некоторые аннотации (потому что я не могу найти набор решений для принятия решений) и запускаю свои тесты следующим образом:
mvn clean test -Dgroups=some_tag
Как я пытался использовать своего слушателя:
- Я попытался использовать аннотацию:
@ExtendWith(OnrTestListener.class) @Tag(«все») общедоступный абстрактный класс BaseUITest { … }
- Использование конфигурации в плагине surefire
<configuration> <properties> <property> <name>listener</name> <value>com.google.listeners.OnrTestListener</value> </property> <configurationParameters> junit.jupiter.extensions.autodetection.enabled = true junit.jupiter.execution.parallel.enabled = true junit.jupiter.execution.parallel.mode.default = concurrent junit.jupiter.execution.parallel.mode.classes.default = concurrent junit.jupiter.execution.parallel.config.strategy = fixed junit.jupiter.execution.parallel.config.fixed.parallelism = 5 </configurationParameters> </properties> </configuration>
Но это не работает.
Я был бы благодарен за любую помощь. Спасибо
Ответ №1:
Вы можете использовать механизм SPI.
Добавьте файл org.junit.platform.launcher.TestExecutionListener
в /src/main/resources/META-INF/services/
папку.
Затем добавьте полное имя вашего слушателя {your package}.OnrTestListener
в этот файл.
Прослушиватель будет применен автоматически.