diff --git a/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java b/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java index 5c5e974ae..4cb9afa0d 100644 --- a/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java +++ b/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java @@ -101,7 +101,8 @@ */ @SuppressWarnings({ "PMD.ExcessiveImports", "PMD.TooManyMethods", "PMD.GodClass", "PMD.CyclomaticComplexity", - "ClassFanOutComplexity", "ClassDataAbstractionCoupling", "PMD.ExcessiveClassLength" + "ClassFanOutComplexity", "ClassDataAbstractionCoupling", "PMD.ExcessiveClassLength", + "PMD.NcssCount" }) public class AllureTestNg implements ISuiteListener, @@ -141,6 +142,17 @@ public class AllureTestNg implements private final AllureTestNgConfig config; + /** + * Package private constructor to allow custom configurations for unit tests. + */ + AllureTestNg(final AllureLifecycle lifecycle, + final AllureTestNgTestFilter testFilter, + final AllureTestNgConfig config) { + this.lifecycle = lifecycle; + this.testFilter = testFilter; + this.config = config; + } + public AllureTestNg(final AllureLifecycle lifecycle, final AllureTestNgTestFilter testFilter) { this.lifecycle = lifecycle; @@ -537,6 +549,10 @@ public void onConfigurationSuccess(final ITestResult itr) { @Override public void onConfigurationFailure(final ITestResult itr) { + if (config.isHideConfigurationFailures()) { + return; //do nothing + } + final String uuid = UUID.randomUUID().toString(); final String parentUuid = UUID.randomUUID().toString(); @@ -554,7 +570,6 @@ public void onConfigurationFailure(final ITestResult itr) { ); stopTestCase(uuid, itr.getThrowable(), getStatus(itr.getThrowable())); - //do nothing } @Override diff --git a/allure-testng/src/main/java/io/qameta/allure/testng/config/AllureTestNgConfig.java b/allure-testng/src/main/java/io/qameta/allure/testng/config/AllureTestNgConfig.java index d4ab05e74..f35fdea72 100644 --- a/allure-testng/src/main/java/io/qameta/allure/testng/config/AllureTestNgConfig.java +++ b/allure-testng/src/main/java/io/qameta/allure/testng/config/AllureTestNgConfig.java @@ -24,10 +24,15 @@ public class AllureTestNgConfig { public static final String ALLURE_TESTNG_HIDE_DISABLED_TESTS = "allure.testng.hide.disabled.tests"; + public static final String ALLURE_TESTNG_HIDE_CONFIGURATION_FAILURES = "allure.testng.hide.configuration.failures"; private boolean hideDisabledTests; + private boolean hideConfigurationFailures; public AllureTestNgConfig(final Properties properties) { this.hideDisabledTests = parseBoolean(properties.getProperty(ALLURE_TESTNG_HIDE_DISABLED_TESTS)); + this.hideConfigurationFailures = parseBoolean( + properties.getProperty(ALLURE_TESTNG_HIDE_CONFIGURATION_FAILURES) + ); } public boolean isHideDisabledTests() { @@ -39,6 +44,15 @@ public AllureTestNgConfig setHideDisabledTests(final boolean hide) { return this; } + public boolean isHideConfigurationFailures() { + return hideConfigurationFailures; + } + + public AllureTestNgConfig setHideConfigurationFailures(final boolean hideConfigurationFailure) { + this.hideConfigurationFailures = hideConfigurationFailure; + return this; + } + public static AllureTestNgConfig loadConfigProperties() { final Properties properties = PropertiesUtils.loadAllureProperties(); return new AllureTestNgConfig(properties); diff --git a/allure-testng/src/test/java/io/qameta/allure/testng/AllureTestNgTest.java b/allure-testng/src/test/java/io/qameta/allure/testng/AllureTestNgTest.java index e3bda742b..69ce4f043 100644 --- a/allure-testng/src/test/java/io/qameta/allure/testng/AllureTestNgTest.java +++ b/allure-testng/src/test/java/io/qameta/allure/testng/AllureTestNgTest.java @@ -60,7 +60,6 @@ import java.util.function.Predicate; import java.util.stream.Collectors; -import static io.qameta.allure.testng.config.AllureTestNgConfig.ALLURE_TESTNG_HIDE_DISABLED_TESTS; import static io.qameta.allure.util.ResultsUtils.ALLURE_SEPARATE_LINES_SYSPROP; import static java.lang.String.format; import static java.util.Arrays.asList; @@ -109,6 +108,28 @@ public static Object[][] parallelConfiguration() { }; } + @AllureFeatures.Fixtures + @Issue("356") + @Test + public void shouldSetHideConfigFailProperty() { + AllureTestNgConfig allureTestNgConfig = AllureTestNgConfig.loadConfigProperties(); + assertThat(allureTestNgConfig.isHideConfigurationFailures()).isFalse(); + allureTestNgConfig.setHideConfigurationFailures(true); + assertThat(allureTestNgConfig.isHideConfigurationFailures()).isTrue(); + } + + @AllureFeatures.Fixtures + @Issue("356") + @Test + public void shouldNotDisplayConfigurationFailsAsTests() { + AllureTestNgConfig allureTestNgConfig = AllureTestNgConfig.loadConfigProperties(); + allureTestNgConfig.setHideConfigurationFailures(true); + final AllureResults results = runTestNgSuites(allureTestNgConfig, "suites/gh-135.xml"); + assertThat(results.getTestResults()) + .extracting(TestResult::getName, TestResult::getStatus) + .containsOnly(tuple("someTest", Status.SKIPPED)); + } + @Test public void shouldSetConfigurationProperty() { AllureTestNgConfig allureTestNgConfig = AllureTestNgConfig.loadConfigProperties(); @@ -1083,12 +1104,12 @@ public void shouldDisplayDisabledTests() { @Issue("369") @Test public void shouldNotDisplayDisabledTests() { - System.setProperty(ALLURE_TESTNG_HIDE_DISABLED_TESTS, "true"); - final AllureResults results = runTestNgSuites("suites/gh-369.xml"); + AllureTestNgConfig allureTestNgConfig = AllureTestNgConfig.loadConfigProperties(); + allureTestNgConfig.setHideDisabledTests(true); + final AllureResults results = runTestNgSuites(allureTestNgConfig,"suites/gh-369.xml"); assertThat(results.getTestResults()) .extracting(TestResult::getName, TestResult::getStatus) .containsOnly(tuple("enabled", Status.PASSED)); - System.setProperty(ALLURE_TESTNG_HIDE_DISABLED_TESTS, "false"); } @SuppressWarnings("unchecked") @@ -1164,12 +1185,6 @@ public void shouldOverrideParameters() { ); } - private AllureResults runTestNgSuites(final String... suites) { - final Consumer emptyConfigurer = testNg -> { - }; - return runTestNgSuites(emptyConfigurer, suites); - } - @SuppressWarnings("unchecked") @AllureFeatures.Parameters @Issue("141") @@ -1225,8 +1240,26 @@ public void shouldOrderTests() { .containsExactly("zTest", "yTest", "xTest", "wTest", "vTest", "vTest"); } + private AllureResults runTestNgSuites(final String... suites) { + final Consumer emptyConfigurer = testNg -> { + }; + return runTestNgSuites(emptyConfigurer, suites); + } + + private AllureResults runTestNgSuites(AllureTestNgConfig config, final String... suites) { + final Consumer emptyConfigurer = testNg -> { + }; + return runTestNgSuites(emptyConfigurer, config, suites); + } + + private AllureResults runTestNgSuites(final Consumer configurer, + final String... suites) {; + return runTestNgSuites(configurer, AllureTestNgConfig.loadConfigProperties(), suites); + } + @Step("Run testng suites {suites}") private AllureResults runTestNgSuites(final Consumer configurer, + final AllureTestNgConfig config, final String... suites) { final ClassLoader classLoader = getClass().getClassLoader(); List suiteFiles = Arrays.stream(suites) @@ -1241,7 +1274,9 @@ private AllureResults runTestNgSuites(final Consumer configurer, final AllureResultsWriterStub results = new AllureResultsWriterStub(); final AllureLifecycle lifecycle = new AllureLifecycle(results); - final AllureTestNg adapter = new AllureTestNg(lifecycle); + final AllureTestNg adapter = new AllureTestNg(lifecycle, + new AllureTestNgTestFilter(), + config); final TestNG testNg = new TestNG(false); testNg.addListener((ITestNGListener) adapter); testNg.setTestSuites(suiteFiles);