diff --git a/allure-junit-platform/src/main/java/io/qameta/allure/junit5/AllureJunit5.java b/allure-junit-platform/src/main/java/io/qameta/allure/junit5/AllureJunit5.java index 300819d35..89ec43cc0 100644 --- a/allure-junit-platform/src/main/java/io/qameta/allure/junit5/AllureJunit5.java +++ b/allure-junit-platform/src/main/java/io/qameta/allure/junit5/AllureJunit5.java @@ -37,6 +37,8 @@ public class AllureJunit5 implements TestExecutionListener { private static final Logger LOGGER = LoggerFactory.getLogger(AllureJunit5.class); private static final String TAG = "tag"; + private static final String SUITE = "suite"; + private static final String PACKAGE = "package"; private final ThreadLocal tests @@ -72,8 +74,8 @@ public void executionStarted(final TestIdentifier testIdentifier) { methodSource.ifPresent(source -> { result.setDescription(getDescription(source)); - result.getLabels().add(new Label().withName("suite").withValue(getSuite(source))); - result.getLabels().add(new Label().withName("package").withValue(source.getClassName())); + result.getLabels().add(new Label().withName(SUITE).withValue(getSuite(source))); + result.getLabels().add(new Label().withName(PACKAGE).withValue(source.getClassName())); }); getLifecycle().scheduleTestCase(result); @@ -81,6 +83,40 @@ public void executionStarted(final TestIdentifier testIdentifier) { } } + @Override + public void executionSkipped(final TestIdentifier testIdentifier, final String reason) { + if (testIdentifier.isTest()) { + final String uuid = tests.get(); + final TestResult result = new TestResult() + .withUuid(uuid) + .withName(testIdentifier.getDisplayName()) + .withLabels(getTags(testIdentifier)) + .withHistoryId(getHistoryId(testIdentifier)) + .withStage(Stage.RUNNING); + + testIdentifier + .getSource() + .filter(MethodSource.class::isInstance) + .map(MethodSource.class::cast) + .ifPresent(source -> { + result.setDescription(getDescription(source)); + result.getLabels().add(new Label().withName(SUITE).withValue(getSuite(source))); + result.getLabels().add(new Label().withName(PACKAGE).withValue(source.getClassName())); + }); + + getLifecycle().scheduleTestCase(result); + getLifecycle().startTestCase(uuid); + + tests.remove(); + getLifecycle().updateTestCase(uuid, testResult -> { + testResult.setStage(Stage.FINISHED); + testResult.setStatus(SKIPPED); + }); + getLifecycle().stopTestCase(uuid); + getLifecycle().writeTestCase(uuid); + } + } + @Override public void executionFinished(final TestIdentifier testIdentifier, final TestExecutionResult testExecutionResult) { if (testIdentifier.isTest()) { diff --git a/allure-junit-platform/src/test/java/io/qameta/allure/junit5/AllureJunit5Test.java b/allure-junit-platform/src/test/java/io/qameta/allure/junit5/AllureJunit5Test.java index 05515883c..ed6bd348f 100644 --- a/allure-junit-platform/src/test/java/io/qameta/allure/junit5/AllureJunit5Test.java +++ b/allure-junit-platform/src/test/java/io/qameta/allure/junit5/AllureJunit5Test.java @@ -251,6 +251,17 @@ void shouldProcessJunit5Description() { .contains("Test description"); } + @Test + void shouldProcessDisabledTests() { + runClasses(DisabledTests.class); + + final List testResults = results.getTestResults(); + assertThat(testResults) + .hasSize(1) + .first() + .hasFieldOrPropertyWithValue("status", Status.SKIPPED); + } + private void runClasses(Class... classes) { final ClassSelector[] classSelectors = Stream.of(classes) .map(DiscoverySelectors::selectClass) diff --git a/allure-junit-platform/src/test/java/io/qameta/allure/junit5/features/DisabledTests.java b/allure-junit-platform/src/test/java/io/qameta/allure/junit5/features/DisabledTests.java new file mode 100644 index 000000000..c1bd74bf5 --- /dev/null +++ b/allure-junit-platform/src/test/java/io/qameta/allure/junit5/features/DisabledTests.java @@ -0,0 +1,13 @@ +package io.qameta.allure.junit5.features; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +public class DisabledTests { + + @Test + @Disabled + void disabledByAnnotation() { + + } +}