Best Serenity JUnit code snippet using net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator.aggregateTestOutcomesByTestMethods
Source:WhenRunningADataDrivenTestScenario.java  
...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(),...Source:SerenityParameterizedRunner.java  
...182            generateReports();183        }184    }185    public void generateReports() {186        generateReportsFor(parameterizedTestsOutcomeAggregator.aggregateTestOutcomesByTestMethods());187    }188    private void generateReportsFor(List<TestOutcome> testOutcomes) {189        getReportService().generateReportsFor(testOutcomes);190        getReportService().generateConfigurationsReport();191    }192    private ReportService getReportService() {193        if (reportService == null) {194            reportService = new ReportService(getOutputDirectory(), getDefaultReporters());195        }196        return reportService;197    }198    private Collection<AcceptanceTestReporter> getDefaultReporters() {199        return ReportService.getDefaultReporters();200    }...Source:ParameterizedTestsOutcomeAggregator.java  
...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);27            TestOutcome scenarioOutcome = scenarioOutcomeFor(normalizedMethodName, testOutcome, scenarioOutcomes);28            recordTestOutcomeAsSteps(testOutcome, scenarioOutcome);29            if (testOutcome.isManual()) {...Source:WhenRunningADataDrivenTestScenarioToCheckDuration.java  
...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}...aggregateTestOutcomesByTestMethods
Using AI Code Generation
1import net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator;2import org.junit.runner.notification.RunNotifier;3import org.junit.runners.Parameterized;4import org.junit.runners.model.FrameworkMethod;5import org.junit.runners.model.InitializationError;6import java.util.List;7public class ParameterizedTestsOutcomeAggregatorRunner extends Parameterized {8    private final ParameterizedTestsOutcomeAggregator aggregator = new ParameterizedTestsOutcomeAggregator();9    public ParameterizedTestsOutcomeAggregatorRunner(Class<?> klass) throws Throwable {10        super(klass);11    }12    public void run(RunNotifier notifier) {13        super.run(notifier);14        aggregator.aggregateTestOutcomesByTestMethods(getTestClass().getJavaClass(), getChildren());15    }16    protected List<FrameworkMethod> getChildren() {17        return super.getChildren();18    }19}20import net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator;21import org.junit.runner.notification.RunNotifier;22import org.junit.runners.Parameterized;23import org.junit.runners.model.FrameworkMethod;24import org.junit.runners.model.InitializationError;25import java.util.List;26public class ParameterizedTestsOutcomeAggregatorRunner extends Parameterized {27    private final ParameterizedTestsOutcomeAggregator aggregator = new ParameterizedTestsOutcomeAggregator();28    public ParameterizedTestsOutcomeAggregatorRunner(Class<?> klass) throws Throwable {29        super(klass);30    }31    public void run(RunNotifier notifier) {32        super.run(notifier);33        aggregator.aggregateTestOutcomesByTestClass(getTestClass().getJavaClass());34    }35    protected List<FrameworkMethod> getChildren() {36        return super.getChildren();37    }38}39@RunWith(ParameterizedTestsOutcomeAggregatorRunner.class)40public class TestClass {41    public static Collection data() {42        return Arrays.asList(new Object[][]{43                {1, 2, 3},44                {4, 5, 9}45        });46    }47    private int a;48    private int b;aggregateTestOutcomesByTestMethods
Using AI Code Generation
1    private List<TestOutcome> aggregateTestOutcomesByTestMethods(List<TestOutcome> outcomes) {2        Map<String, TestOutcome> aggregatedOutcomes = new HashMap<>();3        for (TestOutcome outcome : outcomes) {4            String testName = outcome.getTestMethodName();5            if (!aggregatedOutcomes.containsKey(testName)) {6                aggregatedOutcomes.put(testName, outcome);7            } else {8                aggregatedOutcomes.get(testName).addStepOutcomesFrom(outcome);9            }10        }11        return new ArrayList<>(aggregatedOutcomes.values());12    }13}aggregateTestOutcomesByTestMethods
Using AI Code Generation
1import net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator2import net.serenitybdd.junit.runners.SerenityRunner3import org.junit.runner.RunWith4@RunWith(SerenityRunner)5class TestRunner extends ParameterizedTestsOutcomeAggregator {6    protected void aggregateTestOutcomesByTestMethods() {7        aggregateTestOutcomesByTestClassAndTestMethod()8    }9    protected void aggregateTestOutcomesByTestClasses() {10        aggregateTestOutcomesByTestClassAndTestMethod()11    }12}13import net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator14import net.serenitybdd.junit.runners.SerenityRunner15import org.junit.runner.RunWith16@RunWith(SerenityRunner)17class TestRunner extends ParameterizedTestsOutcomeAggregator {18    protected void aggregateTestOutcomesByTestMethods() {19        aggregateTestOutcomesByTestClassAndTestMethod()20    }21}22import net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator23import net.serenitybdd.junit.runners.SerenityRunner24import org.junit.runner.RunWith25@RunWith(SerenityRunner)26class TestRunner extends ParameterizedTestsOutcomeAggregator {27    protected void aggregateTestOutcomesByTestClasses() {28        aggregateTestOutcomesByTestClassAndTestMethod()29    }30}31import net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator32import net.serenitybdd.junitaggregateTestOutcomesByTestMethods
Using AI Code Generation
1def testOutcomes = aggregateTestOutcomesByTestMethods(testOutcomes)2testOutcomes.each { testOutcome ->3    testOutcome.getTestSteps().each { testStep ->4        println testStep.getDescription()5    }6}7def testOutcomes = aggregateTestOutcomesByTestMethods(testOutcomes)8testOutcomes.each { testOutcome ->9    testOutcome.getTestSteps().each { testStep ->10        println testStep.getDescription()11    }12}aggregateTestOutcomesByTestMethods
Using AI Code Generation
1import net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator;2import net.thucydides.core.model.TestOutcome;3import net.thucydides.core.model.TestResult;4import net.thucydides.core.model.TestStep;5import net.thucydides.core.model.TestTag;6import net.thucydides.core.model.TestType;7import net.thucydides.core.model.results.TestStepResult;8import net.thucydides.core.steps.StepEventBus;9import net.thucydides.core.steps.StepFailure;10import net.thucydides.core.steps.StepListener;11import net.thucydides.core.util.EnvironmentVariables;12import net.thucydides.core.util.NameConverter;13import org.apache.commons.lang3.StringUtils;14import org.junit.runner.Description;15import org.junit.runner.notification.Failure;16import org.junit.runner.notification.RunNotifier;17import org.junit.runners.Parameterized;18import org.junit.runners.model.FrameworkMethod;19import org.junit.runners.model.InitializationError;20import org.junit.runners.model.Statement;21import org.slf4j.Logger;22import org.slf4j.LoggerFactory;23import org.slf4j.MDC;24import java.lang.annotation.Annotation;25import java.lang.reflect.Method;26import java.util.ArrayList;27import java.util.Arrays;28import java.util.Collections;29import java.util.List;30import java.util.Optional;31import java.util.concurrent.atomic.AtomicInteger;32import java.util.stream.Collectors;33import static net.thucydides.core.ThucydidesSystemProperty.SERENITY_TEST_RUNNER;34public class ParameterizedTestsRunner extends Parameterized {35    private static final Logger LOGGER = LoggerFactory.getLogger(ParameterizedTestsRunner.class);36    private final List<FrameworkMethod> parameterizedMethods = new ArrayList<>();37    private final ParameterizedTestsOutcomeAggregator testOutcomeAggregator = new ParameterizedTestsOutcomeAggregator();38    private final ParameterizedTestsNameProvider nameProvider = new ParameterizedTestsNameProvider();39    private final ParameterizedTestsNotifier parameterizedTestsNotifier = new ParameterizedTestsNotifier();40    private final ParameterizedTestsRunnerFactory parameterizedTestsRunnerFactory = new ParameterizedTestsRunnerFactory();41    private final ParameterizedTestsRunnerListener parameterizedTestsRunnerListener = new ParameterizedTestsRunnerListener();42    private final ParameterizedTestsRunnerName parameterizedTestsRunnerName = new ParameterizedTestsRunnerName();43    private final ParameterizedTestsRunnerDescription parameterizedTestsRunnerDescription = new ParameterizedTestsRunnerDescription();aggregateTestOutcomesByTestMethods
Using AI Code Generation
1import com.google.common.collect.Lists2import com.google.common.collect.Maps3import net.serenitybdd.junit.runners.ParameterizedTestsOutcomeAggregator4import net.thucydides.core.model.TestOutcome5import net.thucydides.core.model.TestResult6import net.thucydides.core.reports.TestOutcomes7import net.thucydides.core.util.EnvironmentVariables8import net.thucydides.core.util.MockEnvironmentVariables9import org.junit.runner.Description10import org.junit.runner.RunWith11import org.junit.runners.Parameterized12import org.junit.runners.Parameterized.Parameters13import org.junit.runners.model.FrameworkMethod14import org.junit.runners.model.Statement15import spock.lang.Specification16import spock.lang.Stepwise17import spock.lang.Unroll18import java.nio.file.Files19import java.nio.file.Paths20import java.util.stream.Collectors21import static net.thucydides.core.ThucydidesSystemProperty.THUCYDIDES_TEST_DATA_DIRECTORY22@RunWith(Parameterized.class)23class Test extends Specification {24    private static final String TEST_OUTCOMES_FILE_PATH = Paths.get(TEST_DATA_DIRECTORY, TEST_OUTCOMES_FILE_NAME).toString()25    private static final List<String> TEST_OUTCOMES_COLUMNS = Lists.newArrayList("testName", "testResult", "testDurationMillis")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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
