How to use from method of net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator class

Best Serenity JUnit code snippet using net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator.from

Source:WhenRunningADataDrivenTestScenario.java Github

copy

Full Screen

...67    @Test68    public void a_data_driven_test_driver_should_run_one_test_per_row_of_data() throws Throwable {69        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleDataDrivenScenario.class);70        runner.run(new RunNotifier());71        List<TestOutcome> executedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).getTestOutcomesForAllParameterSets();72        assertThat(executedScenarios.size(), is(36));73    }74    @Test75    public void manual_data_driven_tests_should_be_allowed() throws Throwable {76        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(AddDifferentSortsOfTodos.class);77        runner.run(new RunNotifier());78        List<TestOutcome> executedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).getTestOutcomesForAllParameterSets();79        assertThat(executedScenarios.size(), is(4));80    }81    @Test82    public void a_data_driven_test_driver_should_aggregate_test_outcomes() throws Throwable {83        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleDataDrivenScenario.class);84        runner.run(new RunNotifier());85        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();86        assertThat(aggregatedScenarios.size(), is(3));87        assertThat(aggregatedScenarios.get(0).getStepCount(), is(12));88        assertThat(aggregatedScenarios.get(1).getStepCount(), is(12));89    }90    @Test91    public void a_data_driven_test_driver_should_record_a_sample_scenario() throws Throwable {92        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleDataDrivenScenario.class);93        runner.run(new RunNotifier());94        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();95        assertThat(aggregatedScenarios.get(0).getDataDrivenSampleScenario(), containsString("Step with parameters: <Parameter 1>, <Parameter 2>\n" +96                "Step that succeeds\n" +97                "Another step that succeeds"));98    }99    @Test100    public void a_data_driven_test_driver_should_record_a_table_of_example() throws Throwable {101        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleSingleDataDrivenScenario.class);102        runner.run(new RunNotifier());103        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();104        assertThat(aggregatedScenarios.size(), is(1));105        assertThat(aggregatedScenarios.get(0).getStepCount(), is(15));106    }107    @Test108    public void a_data_driven_test_with_a_failing_assumption_should_be_ignored() throws Throwable {109        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleSingleDataDrivenScenarioWithFailingAssumption.class);110        runner.run(new RunNotifier());111        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();112        assertThat(aggregatedScenarios.size(), is(1));113        assertThat(aggregatedScenarios.get(0).getStepCount(), is(15));114        for (TestStep step : aggregatedScenarios.get(0).getTestSteps()) {115            assertThat(step.getResult(), is(TestResult.IGNORED));116        }117    }118    @Test119    public void a_data_driven_test_driver_should_aggregate_test_outcomes_without_steps() throws Throwable {120        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SimpleSuccessfulParametrizedTestSample.class);121        runner.run(new RunNotifier());122        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();123        assertThat(aggregatedScenarios.size(), is(2));124        assertThat(aggregatedScenarios.get(0).getStepCount(), is(3));125        assertThat(aggregatedScenarios.get(1).getStepCount(), is(3));126    }127    @Test128    public void data_driven_tests_should_pass_even_if_no_steps_are_called() throws Throwable {129        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SimpleSuccessfulParametrizedTestSample.class);130        runner.run(new RunNotifier());131        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();132        assertThat(aggregatedScenarios.get(0).getResult(), is(TestResult.SUCCESS));133        assertThat(aggregatedScenarios.get(1).getResult(), is(TestResult.SUCCESS));134    }135    @Test136    public void an_ignored_data_driven_test_should_have_result_status_as_ignored() throws Throwable {137        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleDataDrivenIgnoredScenario.class);138        runner.run(new RunNotifier());139        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();140        assertThat(aggregatedScenarios.size(), is(1));141        assertThat(aggregatedScenarios.get(0).getResult(), is(TestResult.IGNORED));142    }143    @Test144    public void an_ignored_data_driven_test_should_have_a_step_for_each_row() throws Throwable {145        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleDataDrivenIgnoredScenario.class);146        runner.run(new RunNotifier());147        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();148        assertThat(aggregatedScenarios.size(), is(1));149        assertThat(aggregatedScenarios.get(0).getTestSteps().size(), is(10));150    }151    @Test152    public void a_pending_data_driven_test_should_have_result_status_as_pending() throws Throwable {153        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleDataDrivenPendingScenario.class);154        runner.run(new RunNotifier());155        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();156        assertThat(aggregatedScenarios.size(), is(1));157        assertThat(aggregatedScenarios.get(0).getResult(), is(TestResult.PENDING));158    }159    @Test160    public void a_pending_data_driven_test_should_have_a_test_step_for_each_row() throws Throwable {161        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleDataDrivenPendingScenario.class);162        runner.run(new RunNotifier());163        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();164        assertThat(aggregatedScenarios.size(), is(1));165        assertThat(aggregatedScenarios.get(0).getTestSteps().size(), is(10));166    }167    @Test168    public void a_data_driven_test_should_also_be_able_to_use_data_from_a_CSV_file() throws Throwable {169        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleCSVDataDrivenScenario.class);170        runner.run(new RunNotifier());171        List<TestOutcome> executedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).getTestOutcomesForAllParameterSets();172        assertThat(executedScenarios.size(), is(24));173    }174    @Test175    public void a_separate_json_report_should_be_generated_for_each_scenario() throws Throwable {176        File outputDirectory = tempFolder.newFolder("thucydides");177        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),178                outputDirectory.getAbsolutePath());179        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleDataDrivenScenario.class);180        runner.run(new RunNotifier());181        File[] reports = reload(outputDirectory).listFiles(new JSONFileFilter());182        assertThat(reports.length, is(3));183    }184    @Test185    public void a_separate_json_report_should_be_generated_for_each_scenario_when_using_data_from_a_CSV_file() throws Throwable {186        File outputDirectory = tempFolder.newFolder("thucydides");187        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),188                outputDirectory.getAbsolutePath());189        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleCSVDataDrivenScenario.class);190        runner.run(new RunNotifier());191        File[] reports = reload(outputDirectory).listFiles(new JSONFileFilter());192        assertThat(reports.length, is(2));193    }194    @Test195    public void json_report_contents_should_reflect_the_test_data_from_the_csv_file() throws Throwable {196        File outputDirectory = tempFolder.newFolder("thucydides");197        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),198                outputDirectory.getAbsolutePath());199        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleCSVDataDrivenScenario.class);200        runner.run(new RunNotifier());201        List<String> reportContents = contentsOf(reload(outputDirectory).listFiles(new JSONFileFilter()));202        assertThat(reportContents, hasItemContainsString("Jack Black"));203        assertThat(reportContents, hasItemContainsString("Joe Smith"));204    }205    private Matcher<? super List<String>> hasItemContainsString(String expectedValue) {206        return new HasItemContainsString(expectedValue);207    }208    private static class HasItemContainsString extends TypeSafeMatcher<List<String>> {209        private final String expectedValue;210        private HasItemContainsString(String expectedValue) {211            this.expectedValue = expectedValue;212        }213        @Override214        protected boolean matchesSafely(List<String> values) {215            return values.stream()216                    .anyMatch(value -> value.contains(expectedValue));217        }218        public void describeTo(Description description) {219            description.appendText("Expecting a list containing a string that contains ").appendValue(expectedValue);220        }221    }222    @Test223    public void when_test_data_is_provided_for_a_step_a_single_test_should_be_executed() throws Throwable {224        File outputDirectory = tempFolder.newFolder("thucydides");225        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),226                outputDirectory.getAbsolutePath());227        SerenityRunner runner = getNormalTestRunnerUsing(SamplePassingScenarioWithTestSpecificData.class);228        runner.run(new RunNotifier());229        List reportContents = contentsOf(reload(outputDirectory).listFiles(new JSONFileFilter()));230        assertThat(reportContents.size(), is(1));231    }232    @Test233    public void when_a_step_fails_for_a_row_the_other_rows_should_be_executed() throws Throwable {234        File outputDirectory = tempFolder.newFolder("thucydides");235        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),236                outputDirectory.getAbsolutePath());237        SerenityRunner runner = getNormalTestRunnerUsing(ScenarioWithTestSpecificDataAndAFailingTestSample.class);238        runner.run(new RunNotifier());239        List<TestOutcome> executedSteps = runner.getTestOutcomes();240        assertThat(executedSteps.size(), is(1));241        TestOutcome testOutcome1 = executedSteps.get(0);242        List<TestStep> dataDrivenSteps = testOutcome1.getTestSteps();243        assertThat(dataDrivenSteps.size(), is(12));244    }245    @Test246    public void when_a_step_is_skipped_for_a_row_the_other_rows_should_be_executed() throws Throwable {247        File outputDirectory = tempFolder.newFolder("thucydides");248        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),249                outputDirectory.getAbsolutePath());250        SerenityRunner runner = getNormalTestRunnerUsing(ScenarioWithTestSpecificDataAndAFailingTestSample.class);251        runner.run(new RunNotifier());252        List<TestOutcome> executedSteps = runner.getTestOutcomes();253        assertThat(executedSteps.size(), is(1));254        TestOutcome testOutcome1 = executedSteps.get(0);255        List<TestStep> dataDrivenSteps = testOutcome1.getTestSteps();256        assertThat(dataDrivenSteps.size(), is(12));257    }258    @Test259    public void browser_should_be_restarted_periodically_if_requested() throws Throwable {260        File outputDirectory = tempFolder.newFolder("thucydides");261        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(), outputDirectory.getAbsolutePath());262        environmentVariables.setProperty("thucydides.restart.browser.frequency", "5");263        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleSingleSessionDataDrivenScenario.class);264        runner.run(new RunNotifier());265    }266    @Test267    public void when_a_step_fails_for_a_row_the_other_rows_should_not_be_skipped() throws Throwable {268        File outputDirectory = tempFolder.newFolder("thucydides");269        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),270                outputDirectory.getAbsolutePath());271        SerenityRunner runner = getNormalTestRunnerUsing(ScenarioWithTestSpecificDataAndAFailingTestSample.class);272        runner.run(new RunNotifier());273        List<TestOutcome> executedSteps = runner.getTestOutcomes();274        assertThat(executedSteps.size(), is(1));275        TestOutcome testOutcome1 = executedSteps.get(0);276        List<TestStep> dataDrivenSteps = testOutcome1.getTestSteps();277        assertThat(dataDrivenSteps.size(), is(12));278        assertThat(dataDrivenSteps.get(1).getResult(), is(TestResult.FAILURE));279        assertThat(dataDrivenSteps.get(2).getResult(), is(TestResult.SUCCESS));280    }281    @Test282    public void when_a_parameterized_test_fails_outside_a_step_a_failure_should_be_recorded() throws Throwable {283        File outputDirectory = tempFolder.newFolder("thucydides");284        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),285                outputDirectory.getAbsolutePath());286        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleDataDrivenScenarioWithExternalFailure.class);287        runner.run(new RunNotifier());288        List<TestOutcome> executedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).getTestOutcomesForAllParameterSets();289        assertThat(executedScenarios.size(), is(10));290        assertThat(executedScenarios.get(0).getResult(), is(TestResult.SUCCESS));291        assertThat(executedScenarios.get(1).getResult(), is(TestResult.FAILURE));292        assertThat(executedScenarios.get(2).getResult(), is(TestResult.SUCCESS));293    }294    @Test295    public void when_a_step_fails_with_an_error_for_a_row_the_other_rows_should_be_executed() throws Throwable {296        File outputDirectory = tempFolder.newFolder("thucydides");297        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),298                outputDirectory.getAbsolutePath());299        SerenityRunner runner = getNormalTestRunnerUsing(ScenarioWithTestSpecificDataAndABreakingTestSample.class);300        runner.run(new RunNotifier());301        List<TestOutcome> executedSteps = runner.getTestOutcomes();302        assertThat(executedSteps.size(), is(1));303        TestOutcome testOutcome1 = executedSteps.get(0);304        List<TestStep> dataDrivenSteps = testOutcome1.getTestSteps();305        assertThat(dataDrivenSteps.size(), is(12));306        assertThat(dataDrivenSteps.get(1).getResult(), is(TestResult.ERROR));307        assertThat(dataDrivenSteps.get(2).getResult(), is(TestResult.SUCCESS));308    }309    @RunWith(SerenityRunner.class)310    public static class ScenarioWithTestSpecificDataSample {311        @Managed(driver = "htmlunit")312        public WebDriver webdriver;313        @ManagedPages(defaultUrl = "http://www.google.com")314        public Pages pages;315        @Steps316        public SampleScenarioSteps steps;317        @Test318        public void check_each_row() throws Throwable {319            withTestDataFrom("test-data/simple-data.csv").run(steps).data_driven_test_step();320        }321    }322    @RunWith(SerenityRunner.class)323    public static class ScenarioWithNestedTestSpecificDataSample {324        @Managed(driver = "htmlunit")325        public WebDriver webdriver;326        @ManagedPages(defaultUrl = "http://www.google.com")327        public Pages pages;328        @Steps329        public NestedDatadrivenSteps steps;330        @Test331        public void check_each_row() throws Throwable {332            steps.check_each_row();333        }334    }335    @RunWith(SerenityRunner.class)336    public static class ScenarioWithDeeplyNestedTestSpecificDataSample {337        @Managed(driver = "htmlunit")338        public WebDriver webdriver;339        @ManagedPages(defaultUrl = "http://www.google.com")340        public Pages pages;341        @Steps342        public NestedDatadrivenSteps steps;343        @Test344        public void happy_day_scenario() throws Throwable {345            steps.do_something();346            steps.run_data_driven_tests();347            steps.do_something_else();348        }349    }350    @RunWith(SerenityRunner.class)351    public static class ScenarioWithTestSpecificDataAndAFailingTestSample {352        @Managed(driver = "htmlunit")353        public WebDriver webdriver;354        @ManagedPages(defaultUrl = "http://www.google.com")355        public Pages pages;356        @Steps357        public SampleScenarioSteps steps;358        @Test359        public void happy_day_scenario() throws Throwable {360            withTestDataFrom("test-data/simple-data.csv").run(steps).data_driven_test_step_that_fails();361        }362    }363    @RunWith(SerenityRunner.class)364    public static class ScenarioWithTestSpecificDataAndASkippedTestSample {365        @Managed(driver = "htmlunit")366        public WebDriver webdriver;367        @ManagedPages(defaultUrl = "http://www.google.com")368        public Pages pages;369        @Steps370        public SampleScenarioSteps steps;371        @Test372        public void happy_day_scenario() throws Throwable {373            withTestDataFrom("test-data/simple-data.csv").run(steps).data_driven_test_step_that_is_skipped();374        }375    }376    @RunWith(SerenityRunner.class)377    public static class ScenarioWithTestSpecificDataAndABreakingTestSample {378        @Managed(driver = "htmlunit")379        public WebDriver webdriver;380        @ManagedPages(defaultUrl = "http://www.google.com")381        public Pages pages;382        @Steps383        public SampleScenarioSteps steps;384        @Test385        public void happy_day_scenario() throws Throwable {386            withTestDataFrom("test-data/simple-data.csv").run(steps).data_driven_test_step_that_breaks();387        }388    }389    @Test390    public void when_test_data_is_provided_for_a_step_then_a_step_should_be_reported_for_each_data_row() throws Throwable {391        File outputDirectory = tempFolder.newFolder("thucydides");392        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),393                outputDirectory.getAbsolutePath());394        SerenityRunner runner = getNormalTestRunnerUsing(ScenarioWithTestSpecificDataSample.class);395        runner.run(new RunNotifier());396        List<TestOutcome> executedSteps = runner.getTestOutcomes();397        assertThat(executedSteps.size(), is(1));398        TestOutcome testOutcome1 = executedSteps.get(0);399        List<TestStep> dataDrivenSteps = testOutcome1.getTestSteps();400        assertThat(dataDrivenSteps.size(), is(12));401    }402    @Test403    public void when_test_data_is_provided_for_a_nested_step_then_a_step_should_be_reported_for_each_data_row() throws Throwable {404        File outputDirectory = tempFolder.newFolder("thucydides");405        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),406                outputDirectory.getAbsolutePath());407        SerenityRunner runner = getNormalTestRunnerUsing(ScenarioWithNestedTestSpecificDataSample.class);408        runner.run(new RunNotifier());409        List<TestOutcome> executedSteps = runner.getTestOutcomes();410        assertThat(executedSteps.size(), is(1));411        TestOutcome testOutcome1 = executedSteps.get(0);412        List<TestStep> dataDrivenSteps = testOutcome1.getTestSteps().get(0).getChildren();413        assertThat(dataDrivenSteps.size(), is(12));414    }415    @Test416    public void when_test_data_is_provided_for_a_deeply_nested_step_then_a_step_should_be_reported_for_each_data_row() throws Throwable {417        File outputDirectory = tempFolder.newFolder("thucydides");418        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),419                outputDirectory.getAbsolutePath());420        SerenityRunner runner = getNormalTestRunnerUsing(ScenarioWithDeeplyNestedTestSpecificDataSample.class);421        runner.run(new RunNotifier());422        List<TestOutcome> executedSteps = runner.getTestOutcomes();423        assertThat(executedSteps.size(), is(1));424        TestOutcome testOutcome1 = executedSteps.get(0);425        List<TestStep> dataDrivenSteps = testOutcome1.getTestSteps();426        assertThat(dataDrivenSteps.size(), is(3));427    }428    @Test429    public void test_step_data_should_appear_in_the_step_titles() throws Throwable {430        File outputDirectory = tempFolder.newFolder("thucydides");431        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),432                outputDirectory.getAbsolutePath());433        SerenityRunner runner = getNormalTestRunnerUsing(ScenarioWithTestSpecificDataSample.class);434        runner.run(new RunNotifier());435        List<TestOutcome> executedSteps = runner.getTestOutcomes();436        TestOutcome testOutcome1 = executedSteps.get(0);437        List<TestStep> dataDrivenSteps = testOutcome1.getTestSteps();438        TestStep step1 = dataDrivenSteps.get(0);439        TestStep setNameStep1 = step1.getFlattenedSteps().get(0);440        TestStep step2 = dataDrivenSteps.get(1);441        TestStep setNameStep2 = step2.getFlattenedSteps().get(0);442        assertThat(setNameStep1.getDescription(), containsString("Joe Smith"));443        assertThat(setNameStep2.getDescription(), containsString("Jack Black"));444    }445    @Test446    public void running_a_simple_parameterized_test_should_produce_an_outcome_per_data_row() throws Throwable {447        File outputDirectory = tempFolder.newFolder("thucydides");448        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),449                outputDirectory.getAbsolutePath());450        SerenityParameterizedRunner runner = getTestRunnerUsing(SimpleSuccessfulParametrizedTestSample.class);451        runner.run(new RunNotifier());452        List<String> reportContents = contentsOf(reload(outputDirectory).listFiles(new JSONFileFilter()));453        assertThat(reportContents.size(), is(2));454    }455    @Test456    public void when_the_Concurrent_annotation_is_used_tests_should_be_run_in_parallel() throws Throwable {457        File outputDirectory = tempFolder.newFolder("thucydides");458        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),459                outputDirectory.getAbsolutePath());460        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleParallelDataDrivenScenario.class);461        runner.run(new RunNotifier());462        List<String> reportContents = contentsOf(reload(outputDirectory).listFiles(new JSONFileFilter()));463        assertThat(reportContents, hasItemContainsString("Step with parameters: a, 1"));464        assertThat(reportContents, hasItemContainsString("Step with parameters: b, 2"));465        assertThat(reportContents, hasItemContainsString("Step with parameters: c, 3"));466    }467    @Test468    public void the_Concurrent_annotation_indicates_that_tests_should_be_run_in_parallel() throws Throwable {469        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleParallelDataDrivenScenario.class);470        assertThat(runner.runTestsInParallelFor(SampleParallelDataDrivenScenario.class), is(true));471        assertThat(runner.runTestsInParallelFor(SampleDataDrivenScenario.class), is(false));472    }473    @Test474    public void by_default_the_number_of_threads_is_2_times_the_number_of_CPU_cores() throws Throwable {475        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleParallelDataDrivenScenario.class);476        int threadCount = runner.getThreadCountFor(SampleParallelDataDrivenScenario.class);477        int AVAILABLE_PROCESSORS = Runtime.getRuntime().availableProcessors();478        assertThat(threadCount, is(AVAILABLE_PROCESSORS * 2));479    }480    @RunWith(SerenityParameterizedRunner.class)481    @Concurrent(threads = "7")482    public static final class ParallelDataDrivenScenarioWithSpecifiedThreadCountSample {483        @TestData484        public static Collection testData() {485            return Arrays.asList(new Object[][]{});486        }487        @Test488        public void foo() {489        }490    }491    @Test492    public void the_number_of_threads_can_be_overridden_in_the_concurrent_annotation() throws Throwable {493        SerenityParameterizedRunner runner494                = getTestRunnerUsing(ParallelDataDrivenScenarioWithSpecifiedThreadCountSample.class);495        int threadCount = runner.getThreadCountFor(ParallelDataDrivenScenarioWithSpecifiedThreadCountSample.class);496        assertThat(threadCount, is(7));497    }498    @Test499    public void the_number_of_threads_can_be_overridden_with_a_system_property() throws Throwable {500        environmentVariables.setProperty("thucydides.concurrent.threads", "4");501        SerenityParameterizedRunner runner502                = getTestRunnerUsing(ParallelDataDrivenScenarioWithSpecifiedThreadCountSample.class);503        int threadCount = runner.getThreadCountFor(ParallelDataDrivenScenarioWithSpecifiedThreadCountSample.class);504        assertThat(threadCount, is(4));505    }506    @RunWith(SerenityParameterizedRunner.class)507    @Concurrent(threads = "7x")508    public static final class ParallelDataDrivenScenarioWithRelativeThreadCountSample {509        @TestData510        public static Collection testData() {511            return Arrays.asList(new Object[][]{});512        }513        @Test514        public void foo() {515        }516    }517    @Test518    public void the_number_of_threads_can_be_overridden_in_the_concurrent_annotation_using_a_relative_value() throws Throwable {519        SerenityParameterizedRunner runner520                = getTestRunnerUsing(ParallelDataDrivenScenarioWithRelativeThreadCountSample.class);521        int threadCount = runner.getThreadCountFor(ParallelDataDrivenScenarioWithRelativeThreadCountSample.class);522        int AVAILABLE_PROCESSORS = Runtime.getRuntime().availableProcessors();523        assertThat(threadCount, is(7 * AVAILABLE_PROCESSORS));524    }525    @RunWith(SerenityParameterizedRunner.class)526    @Concurrent(threads = "xxx")527    public static final class ParallelDataDrivenScenarioWithInvalidThreadCountSample {528        @TestData529        public static Collection testData() {530            return Arrays.asList(new Object[][]{});531        }532        @Test533        public void foo() {534        }535    }536    @Test(expected = IllegalArgumentException.class)537    public void if_the_thread_count_is_invalid_an_exception_should_be_thrown() throws Throwable {538        SerenityParameterizedRunner runner539                = getTestRunnerUsing(ParallelDataDrivenScenarioWithInvalidThreadCountSample.class);540        runner.getThreadCountFor(ParallelDataDrivenScenarioWithInvalidThreadCountSample.class);541    }542    private List<String> filenamesOf(File[] files) {543        List filenames = new ArrayList<String>();544        for (File file : files) {545            filenames.add(file.getName());546        }547        return filenames;548    }549    private List<String> contentsOf(File[] files) throws IOException {550        List<String> contents = new ArrayList<>();551        for (File file : files) {552            contents.add(stringContentsOf(file));553        }554        return contents;555    }556    private String stringContentsOf(File reportFile) throws IOException {557        return FileUtils.readFileToString(reportFile);558    }559    private File reload(File old) {560        return Paths.get(old.getAbsolutePath()).toFile();561    }562    @Test563    public void a_separate_html_report_should_be_generated_from_each_scenario() throws Throwable {564        File outputDirectory = tempFolder.newFolder("thucydides");565        environmentVariables.setProperty(ThucydidesSystemProperty.THUCYDIDES_OUTPUT_DIRECTORY.getPropertyName(),566                outputDirectory.getAbsolutePath());567        SerenityParameterizedRunner runner = getTestRunnerUsing(SampleDataDrivenScenario.class);568        runner.run(new RunNotifier());569        File[] reports = reload(outputDirectory).listFiles(new HTMLFileFilter());570        assertThat(reports.length, is(3));571    }572    private class HTMLFileFilter implements FilenameFilter {573        public boolean accept(File directory, String filename) {574            return filename.endsWith(".html") && !filename.endsWith("screenshots.html");575        }576    }577    private class JSONFileFilter implements FilenameFilter {578        public boolean accept(File directory, String filename) {579            return filename.endsWith(".json") && !filename.startsWith("manifest");580        }581    }582    protected SerenityRunner getNormalTestRunnerUsing(Class<?> testClass) throws Throwable {583        DriverConfiguration configuration = new WebDriverConfiguration(environmentVariables);584        WebDriverFactory factory = new WebDriverFactory(environmentVariables);585        return new SerenityRunner(testClass, factory, configuration);586    }587    protected SerenityParameterizedRunner getTestRunnerUsing(Class<?> testClass) throws Throwable {588        return getTestRunnerUsing(testClass, environmentVariables);589    }590    protected SerenityParameterizedRunner getTestRunnerUsing(Class<?> testClass, EnvironmentVariables environmentVariables) throws Throwable {591        DriverConfiguration configuration = new WebDriverConfiguration(environmentVariables);592        WebDriverFactory factory = new WebDriverFactory(environmentVariables);593        BatchManager batchManager = new BatchManagerProvider(configuration).get();594        return new SerenityParameterizedRunner(testClass, configuration, factory, batchManager);595    }596    protected SerenityParameterizedRunner getStubbedTestRunnerUsing(Class<?> testClass) throws Throwable {597        DriverConfiguration configuration = new WebDriverConfiguration(environmentVariables);598        WebDriverFactory factory = new WebDriverFactory(environmentVariables);599        BatchManager batchManager = new BatchManagerProvider(configuration).get();600        return new SerenityParameterizedRunner(testClass, configuration, factory, batchManager) {601            @Override602            public void generateReports() {603                //do nothing604            }605        };606    }607    @Test608    public void parameterized_test_class_correct_number_of_test_methods_are_run_using_one_tag() throws Throwable {609        EnvironmentVariables environmentVariablesWithTags = environmentVariables;610        environmentVariables.setProperty("tags", "b");611        SerenityParameterizedRunner runner = getTestRunnerUsing(612                ExampleDataDrivenWithTestMethodTags.class,613                environmentVariablesWithTags614        );615        runner.run(new RunNotifier());616        List<TestOutcome> executedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).getTestOutcomesForAllParameterSets();617        assertThat(executedScenarios.size(), is(1));618    }619    @Test620    public void parameterized_test_class_correct_number_of_test_methods_are_run_using_multiple_tags() throws Throwable {621        EnvironmentVariables environmentVariablesWithTags = environmentVariables;622        environmentVariables.setProperty("tags", "a or c");623        SerenityParameterizedRunner runner = getTestRunnerUsing(624                ExampleDataDrivenWithTestMethodTags.class,625                environmentVariablesWithTags626        );627        runner.run(new RunNotifier());628        List<TestOutcome> executedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).getTestOutcomesForAllParameterSets();629        assertThat(executedScenarios.size(), is(2));630    }631    @RunWith(SerenityParameterizedRunner.class)632    public static class ExampleDataDrivenWithTestMethodTags {633        @TestData634        public static Collection<Object[]> testData() {635            List<Object[]> list = new ArrayList<>();636            list.add(new String[]{""});637            return list;638        }639        public ExampleDataDrivenWithTestMethodTags(String string) {640        }641        @Test642        @WithTag("a")...

Full Screen

Full Screen

Source:SerenityParameterizedRunner.java Github

copy

Full Screen

...24    private static final int AVAILABLE_PROCESSORS = Runtime.getRuntime().availableProcessors();25    private List<Runner> runners = new ArrayList<>();26    private final DriverConfiguration configuration;27    private ReportService reportService;28    private final ParameterizedTestsOutcomeAggregator parameterizedTestsOutcomeAggregator = ParameterizedTestsOutcomeAggregator.from(this);29    private TagScanner tagScanner;30    /**31     * Test runner used for testing purposes.32     *33     * @param klass            The test class to run34     * @param configuration    current system configuration (usually mocked)35     * @param webDriverFactory a webdriver factory (can be mocked)36     * @param batchManager     a batch manager to process batched testing37     * @throws Throwable - cause anything can happen!38     */39    public SerenityParameterizedRunner(final Class<?> klass,40                                       DriverConfiguration configuration,41                                       final WebDriverFactory webDriverFactory,42                                       final BatchManager batchManager43    ) throws Throwable {44        super(klass, Collections.<Runner>emptyList());45        this.configuration = configuration;46        this.tagScanner = new TagScanner(configuration.getEnvironmentVariables());47        if (runTestsInParallelFor(klass)) {48            scheduleParallelTestRunsFor(klass);49        }50        DataDrivenAnnotations testClassAnnotations = getTestAnnotations();51        if (testClassAnnotations.hasTestDataDefined()) {52            runners = buildTestRunnersForEachDataSetUsing(webDriverFactory, batchManager);53        } else if (testClassAnnotations.hasTestDataSourceDefined()) {54            runners = buildTestRunnersFromADataSourceUsing(webDriverFactory, batchManager);55        }56    }57    private void scheduleParallelTestRunsFor(final Class<?> klass) {58        setScheduler(new ParameterizedRunnerScheduler(klass, getThreadCountFor(klass)));59    }60    public boolean runTestsInParallelFor(final Class<?> klass) {61        return (klass.getAnnotation(Concurrent.class) != null);62    }63    public int getThreadCountFor(final Class<?> klass) {64        Concurrent concurrent = klass.getAnnotation(Concurrent.class);65        String threadValue = getThreadParameter(concurrent);66        int threads = (AVAILABLE_PROCESSORS * 2);67        if (StringUtils.isNotEmpty(threadValue)) {68            if (StringUtils.isNumeric(threadValue)) {69                threads = Integer.parseInt(threadValue);70            } else if (threadValue.endsWith("x")) {71                threads = getRelativeThreadCount(threadValue);72            }73        }74        return threads;75    }76    private String getThreadParameter(Concurrent concurrent) {77        String systemPropertyThreadValue =78                configuration.getEnvironmentVariables().getProperty(ThucydidesJUnitSystemProperties.CONCURRENT_THREADS.getName());79        String annotatedThreadValue = concurrent.threads();80        return (StringUtils.isNotEmpty(systemPropertyThreadValue) ? systemPropertyThreadValue : annotatedThreadValue);81    }82    private int getRelativeThreadCount(final String threadValue) {83        try {84            String threadCount = threadValue.substring(0, threadValue.length() - 1);85            return Integer.parseInt(threadCount) * AVAILABLE_PROCESSORS;86        } catch (NumberFormatException cause) {87            throw new IllegalArgumentException("Illegal thread value: " + threadValue, cause);88        }89    }90    private List<Runner> buildTestRunnersForEachDataSetUsing(final WebDriverFactory webDriverFactory,91                                                     final BatchManager batchManager) throws Throwable {92        if (shouldSkipTest(getTestAnnotations().getTestMethod())) {93            return new ArrayList<>();94        }95        List<Runner> runners = new ArrayList<>();96        DataTable parametersTable = getTestAnnotations().getParametersTableFromTestDataAnnotation();97        for (int i = 0; i < parametersTable.getRows().size(); i++) {98            Class<?> testClass = getTestClass().getJavaClass();99            SerenityRunner runner = new TestClassRunnerForParameters(testClass,100                    configuration,101                    webDriverFactory,102                    batchManager,103                    parametersTable,104                    i);105            runner.useQualifier(from(parametersTable.getRows().get(i).getValues()));106            runners.add(runner);107        }108        return runners;109    }110    private List<Runner> buildTestRunnersFromADataSourceUsing(final WebDriverFactory webDriverFactory,111                                                      final BatchManager batchManager) throws Throwable {112        if (shouldSkipTest(getTestAnnotations().getTestMethod())) {113            return new ArrayList<>();114        }115        List<Runner> runners = new ArrayList<>();116        List<?> testCases = getTestAnnotations().getDataAsInstancesOf(getTestClass().getJavaClass());117        DataTable parametersTable = getTestAnnotations().getParametersTableFromTestDataSource();118        for (int i = 0; i < testCases.size(); i++) {119            Object testCase = testCases.get(i);120            SerenityRunner runner = new TestClassRunnerForInstanciatedTestCase(testCase,121                    configuration,122                    webDriverFactory,123                    batchManager,124                    parametersTable,125                    i);126            runner.useQualifier(getQualifierFor(testCase));127            runners.add(runner);128        }129        return runners;130    }131    private boolean shouldSkipTest(FrameworkMethod method) {132        return !tagScanner.shouldRunMethod(getTestClass().getJavaClass(), method.getName());133    }134    private String getQualifierFor(final Object testCase) {135        return QualifierFinder.forTestCase(testCase).getQualifier();136    }137    private DataDrivenAnnotations getTestAnnotations() {138        return DataDrivenAnnotations.forClass(getTestClass());139    }140    private String from(final Collection testData) {141        StringBuffer testDataQualifier = new StringBuffer();142        boolean firstEntry = true;143        for (Object testDataValue : testData) {144            if (!firstEntry) {145                testDataQualifier.append("/");146            }147            testDataQualifier.append(testDataValue);148            firstEntry = false;149        }150        return testDataQualifier.toString();151    }152    /**153     * Only called reflectively. Do not use programmatically.154     *...

Full Screen

Full Screen

Source:ParameterizedTestsOutcomeAggregator.java Github

copy

Full Screen

...8    private final SerenityParameterizedRunner serenityParameterizedRunner;9    private ParameterizedTestsOutcomeAggregator(SerenityParameterizedRunner serenityParameterizedRunner) {10        this.serenityParameterizedRunner = serenityParameterizedRunner;11    }12    public static ParameterizedTestsOutcomeAggregator from(SerenityParameterizedRunner serenityParameterizedRunner) {13        return new ParameterizedTestsOutcomeAggregator(serenityParameterizedRunner);14    }15    public List<TestOutcome> aggregateTestOutcomesByTestMethods() {16        List<TestOutcome> allOutcomes = getTestOutcomesForAllParameterSets();17        if (allOutcomes.isEmpty()) {18            return new ArrayList<>();19        } else {20            return  aggregatedScenarioOutcomes(allOutcomes);21        }22    }23    private List<TestOutcome> aggregatedScenarioOutcomes(List<TestOutcome> allOutcomes) {24        Map<String, TestOutcome> scenarioOutcomes = new HashMap();25        for (TestOutcome testOutcome : allOutcomes) {26            final String normalizedMethodName = baseMethodName(testOutcome);...

Full Screen

Full Screen

Source:WhenRunningADataDrivenTestScenarioToCheckDuration.java Github

copy

Full Screen

...51    @Test52    public void a_data_driven_test_driver_should_aggregate_test_outcomes() throws Throwable  {53        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing(SampleDataDrivenScenarioWithDelays.class);54        runner.run(new RunNotifier());55        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();56        for (TestOutcome test : aggregatedScenarios) {57            long duration = 0;58            for (TestStep step : test.getTestSteps()) {59                duration += step.getDuration();60            }61//            assertThat("Duration of tests is invalid", test.getDuration() > 0, is(true));62            assertThat("Duration of tests invalid not propagated", test.getDuration(), is(duration));63        }64    }65    @Test66    public void a_data_driven_test_driver_should_aggregate_test_outcomes2() throws Throwable  {67        SerenityParameterizedRunner runner = getStubbedTestRunnerUsing( SampleCSVDataDrivenScenarioWithDelays.class);68        runner.run(new RunNotifier());69        List<TestOutcome> aggregatedScenarios = ParameterizedTestsOutcomeAggregator.from(runner).aggregateTestOutcomesByTestMethods();70        for (TestOutcome test : aggregatedScenarios) {71            long duration = 0;72            for (TestStep step : test.getTestSteps()) {73                duration += step.getDuration();74            }75            assertThat("Duration of tests is invalid", test.getDuration() > 0, is(true));76            assertThat("Duration of tests invalid not propagated", test.getDuration(), is(duration));77            assertThat("Duration in seconds of tests invalid", test.getDurationInSeconds() > 0, is(true));78        }79    }80}...

Full Screen

Full Screen

from

Using AI Code Generation

copy

Full Screen

1    public List<Outcome> aggregate(List<Outcome> outcomes) {2        List<Outcome> aggregatedOutcomes = new ArrayList<Outcome>();3        for (Outcome outcome : outcomes) {4            if (outcome.isFailure()) {5                aggregatedOutcomes.add(outcome);6            }7        }8        return aggregatedOutcomes;9    }

Full Screen

Full Screen

from

Using AI Code Generation

copy

Full Screen

1    public static <T> List<T> uniqueValues(List<T> values) {2        ArrayList<T> uniqueValues = new ArrayList<>();3        for (T value : values) {4            if (!uniqueValues.contains(value)) {5                uniqueValues.add(value);6            }7        }8        return uniqueValues;9    }10}

Full Screen

Full Screen

from

Using AI Code Generation

copy

Full Screen

1    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {2        List<TestOutcome> parameterizedTestOutcomes = new ArrayList<>();3        for (TestOutcome testOutcome : testOutcomes) {4            if (testOutcome.isParameterized()) {5                parameterizedTestOutcomes.add(testOutcome);6            }7        }8        return parameterizedTestOutcomes;9    }10    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {11        return testOutcomes.stream().filter(TestOutcome::isParameterized).collect(Collectors.toList());12    }13    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {14        return testOutcomes.stream().filter(TestOutcome::isParameterized).collect(Collectors.toList());15    }16    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {17        return testOutcomes.stream().filter(TestOutcome::isParameterized).collect(Collectors.toList());18    }19    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {20        return testOutcomes.stream().filter(TestOutcome::isParameterized).collect(Collectors.toList());21    }22    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {23        return testOutcomes.stream().filter(TestOutcome::isParameterized).collect(Collectors.toList());24    }25    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {26        return testOutcomes.stream().filter(TestOutcome::isParameterized).collect(Collectors.toList());27    }28    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {29        return testOutcomes.stream().filter(TestOutcome::isParameterized).collect(Collectors.toList());30    }31    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {32        return testOutcomes.stream().filter(TestOutcome::isParameterized).collect(Collectors.toList());33    }34    public static List<TestOutcome> aggregateTestOutcomesByParameterizedTest(List<TestOutcome> testOutcomes) {

Full Screen

Full Screen

from

Using AI Code Generation

copy

Full Screen

1    public void testWithParameters(String first, String second) {2        System.out.println("Parameterized Number is : " + first + " and " + second);3    }4    public static Collection primeNumbers() {5        return Arrays.asList(new Object[][] {6                 { "2", "2" },7                 { "6", "35" },8                 { "19", "46" },9                 { "22", "63" }10           });11    }12}13@Timeout(value = 1, unit = TimeUnit.MINUTES)

Full Screen

Full Screen

from

Using AI Code Generation

copy

Full Screen

1    static List<Object[]> getParametersFrom(List<Runner> runners) {2        List<Object[]> parameters = new ArrayList<>();3        for (Runner runner : runners) {4            if (runner instanceof Parameterized) {5                List<Object[]> runnerParameters = ((Parameterized) runner).getParameters();6                parameters.addAll(runnerParameters);7            }8        }9        return parameters;10    }11}12@CucumberOptions(features = "src/test/resources/features")13@RunWith(SerenityParameterizedRunner.class)14public class CucumberTestSuite extends ParameterizedTestsOutcomeAggregator {15    public CucumberTestSuite(Class<?> klass, RunnerBuilder builder) throws InitializationError {16        super(klass, builder);17    }18    protected List<Runner> getChildren() {19        List<Runner> runners = super.getChildren();20        return runners;21    }22    protected List<Object[]> getParametersFrom(List<Runner> runners) {23        List<Object[]> parameters = new ArrayList<>();24        for (Runner runner : runners) {25            if (runner instanceof Parameterized) {26                List<Object[]> runnerParameters = ((Parameterized) runner).getParameters();27                parameters.addAll(runnerParameters);28            }29        }30        return parameters;31    }32}33public class LoginTest {34    WebDriver driver;35    public void setup() {36        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Sonia\\Documents\\Selenium\\chromedriver.exe");37        driver = new ChromeDriver();38    }

Full Screen

Full Screen

from

Using AI Code Generation

copy

Full Screen

1    public int getTestCount() {2        return testCount;3    }4    public int getSkipCount() {5        return skipCount;6    }7    public int getFailureCount() {8        return failureCount;9    }10    public int getIgnoreCount() {11        return ignoreCount;12    }13    public int getSuccessCount() {14        return successCount;15    }16    public int getTotalCount() {17        return totalCount;18    }19    public int getPendingCount() {20        return pendingCount;21    }22    public int getErrorCount() {23        return errorCount;24    }25    public int getNotRunCount() {26        return notRunCount;27    }28    public int getAssumptionFailureCount() {29        return assumptionFailureCount;30    }

Full Screen

Full Screen

from

Using AI Code Generation

copy

Full Screen

1    private String getParameterizedDescription(Description description) {2        String methodName = description.getMethodName();3        String parameterizedName = methodName.substring(0, methodName.lastIndexOf('['));4        String parameters = methodName.substring(methodName.lastIndexOf('['));5        if (parameters.contains(",")) {6            parameters = parameters.replace(",", " ");7        }8        return parameterizedName + parameters;9    }10    private String getParameterizedDescription(Description description) {11        String methodName = description.getMethodName();12        String parameterizedName = methodName.substring(0, methodName.lastIndexOf('['));13        String parameters = methodName.substring(methodName.lastIndexOf('['));14        if (parameters.contains(",")) {15            parameters = parameters.replace(",", " ");16        }17        return parameterizedName + parameters;18    }19    private String getParameterizedDescription(Description description) {20        String methodName = description.getMethodName();21        String parameterizedName = methodName.substring(0, methodName.lastIndexOf('['));22        String parameters = methodName.substring(methodName.lastIndexOf('['));23        if (parameters.contains(",")) {24            parameters = parameters.replace(",", " ");25        }26        return parameterizedName + parameters;27    }28    private String getParameterizedDescription(Description description) {29        String methodName = description.getMethodName();30        String parameterizedName = methodName.substring(0, methodName.lastIndexOf('['));31        String parameters = methodName.substring(methodName.lastIndexOf('['));32        if (parameters.contains(",")) {33            parameters = parameters.replace(",", " ");34        }35        return parameterizedName + parameters;36    }37    private String getParameterizedDescription(Description description) {38        String methodName = description.getMethodName();39        String parameterizedName = methodName.substring(0, methodName.lastIndexOf('['));40        String parameters = methodName.substring(methodName.lastIndexOf('['));41        if (parameters.contains(",")) {42            parameters = parameters.replace(",", " ");43        }44        return parameterizedName + parameters;45    }46    private String getParameterizedDescription(Description description) {47        String methodName = description.getMethodName();48        String parameterizedName = methodName.substring(0, methodName.lastIndexOf('['));49        String parameters = methodName.substring(methodName.lastIndexOf('['));50        if (parameters.contains(",")) {51            parameters = parameters.replace(",", " ");52        }53        return parameterizedName + parameters;54    }55    private String getParameterizedDescription(Description description) {56        String methodName = description.getMethodName();57        String parameterizedName = methodName.substring(0, methodName.lastIndexOf('['));58        String parameters = methodName.substring(methodName.lastIndexOf('['));59        if (parameters.contains(","))

Full Screen

Full Screen

from

Using AI Code Generation

copy

Full Screen

1public static String generateReportFor(List<TestMethodOutcome> outcomes) {2    StringBuilder report = new StringBuilder();3    for (TestMethodOutcome testMethodOutcome : outcomes) {4        report.append("### ").append(testMethodOutcome.getName()).append("5");6        report.append("7");8        report.append("Test parameters: ").append(testMethodOutcome.getParameters()).append("9");10        report.append("11");12        report.append("Test duration: ").append(testMethodOutcome.getDuration()).append("13");14        report.append("15");16        report.append("Test result: ").append(testMethodOutcome.getResult()).append("17");18        report.append("19");20        report.append("Test error: ").append(testMethodOutcome.getError()).append("21");22        report.append("23");24        report.append("Test failure: ").append(testMethodOutcome.getFailure()).append("25");26        report.append("27");28        report.append("Test skipped: ").append(testMethodOutcome.getSkipped()).append("29");30        report.append("31");32        report.append("Test pending: ").append(testMethodOutcome.getPending()).append("33");34        report.append("35");36        report.append("Test ignored: ").append(testMethodOutcome.getIgnored()).append("37");38        report.append("39");40        report.append("Test issues: ").append(testMethodOutcome.getIssues()).append("41");42        report.append("43");44        report.append("Test tags: ").append(testMethodOutcome.getTags()).append("45");46        report.append("47");48        report.append("Test story: ").append(testMethodOutcome.getStory()).append("49");50        report.append("51");52        report.append("Test step: ").append(testMethodOutcome.getStep()).append("53");54        report.append("55");56        report.append("Test step description: ").append(testMethodOutcome.getStepDescription()).append("57");58        report.append("59");60        report.append("Test step duration: ").append(testMethodOutcome.getStepDuration()).append("61");62        report.append("63");64        report.append("Test step result: ").append(testMethodOutcome.getStepResult()).append("65");66        report.append("67");68        report.append("Test step error: ").append(testMethodOutcome.getStepError()).append("69");70        report.append("71");72        report.append("Test step failure: ").append(testMethodOutcome.getStepFailure()).append("73");74        report.append("75");76        report.append("Test step skipped:

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Serenity JUnit automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in ParameterizedTestsOutcomeAggregator

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful