Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serenity Report Generation failure when using JUnit5 DataDriven Testing using @CsvFileSource | java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "c" is null #2869

Open
sumit12071988 opened this issue Jul 14, 2022 · 4 comments

Comments

@sumit12071988
Copy link

Serenity version used: 3.2.5
Junit5 version used : 5.9.0-M1

@ExtendWith(SerenityJUnit5Extension.class)
class b_DataDrivenTestingUsingCSVTest {
    @Managed(driver = "chrome", options = "--headless")
    WebDriver driver;

    TwoInputFieldForm twoInputFieldForm;

    @ParameterizedTest(name = "First element: {0} | Second element: {1} | Summation Result: {2}")   // {x} is the value from I/P parameter it will fetch during each iteration
    **@CsvFileSource**(files = "src/test/resources/testdata/calculations.csv", numLinesToSkip = 1)
    void shouldCalculateTheCorrectTotal(String a, String b, String calculatedTotal){
        twoInputFieldForm.open();

        twoInputFieldForm.enterA(a);
        twoInputFieldForm.enterB(b);
        twoInputFieldForm.getTotal();

        assertThat(twoInputFieldForm.displayedTotal()).isEqualTo(calculatedTotal);
    }
}

Error logs:
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- serenity-maven-plugin:3.2.5:aggregate (serenity-reports) @ SerenityJunit5 ---
[WARNING] Failed to generate report for Test Summary Report - java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "c" is null
java.base/java.util.ArrayList.(ArrayList.java:181)

java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "c" is null
at java.util.concurrent.FutureTask.report (FutureTask.java:122)
at java.util.concurrent.FutureTask.get (FutureTask.java:205)
at net.thucydides.core.reports.html.Reporter.generateReports (Reporter.java:56)
at net.thucydides.core.reports.html.Reporter.generateReportsFor (Reporter.java:32)
at net.thucydides.core.reports.html.HtmlAggregateStoryReporter.generateReportsForTestResultsIn (HtmlAggregateStoryReporter.java:222)
at net.thucydides.core.reports.html.HtmlAggregateStoryReporter.generateReportsForTestResultsFrom (HtmlAggregateStoryReporter.java:135)
at net.serenitybdd.maven.plugins.SerenityAggregatorMojo.generateHtmlStoryReports (SerenityAggregatorMojo.java:252)
at net.serenitybdd.maven.plugins.SerenityAggregatorMojo.execute (SerenityAggregatorMojo.java:195)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:301)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:127)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "c" is null
at java.util.ArrayList. (ArrayList.java:181)

at net.thucydides.core.model.DataTableRow.getValues (DataTableRow.java:27)
at net.thucydides.core.model.DataTable.addRowsTo (DataTable.java:277)
at net.thucydides.core.model.DataTable.renderTableBody (DataTable.java:262)
at net.thucydides.core.model.DataTable.lambda$toMarkdown$1 (DataTable.java:249)
at java.util.ArrayList.forEach (ArrayList.java:1511)
at net.thucydides.core.model.DataTable.toMarkdown (DataTable.java:246)
at net.thucydides.core.requirements.reports.ScenarioOutcomes.outcomeFrom (ScenarioOutcomes.java:65)
at net.thucydides.core.requirements.reports.ScenarioOutcomes.lambda$from$0 (ScenarioOutcomes.java:34)
at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:197)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining (ArrayList.java:1625)
at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:509)
at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:499)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential (ReduceOps.java:921)
at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect (ReferencePipeline.java:682)
at net.thucydides.core.requirements.reports.ScenarioOutcomes.from (ScenarioOutcomes.java:35)
at net.thucydides.core.reports.html.FreemarkerContext.getBuildContext (FreemarkerContext.java:159)
at net.thucydides.core.reports.html.TextSummaryReportTask.generateReports (TextSummaryReportTask.java:31)
at net.thucydides.core.reports.html.ReportExecutor.call (ReportExecutor.java:33)
at net.thucydides.core.reports.html.ReportExecutor.call (ReportExecutor.java:12)
at java.util.concurrent.FutureTask.run (FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:635)
at java.lang.Thread.run (Thread.java:833)
[WARNING] Failed to generate report for net.thucydides.core.reports.html.AggregateReportingTask@2a70c8d5 - java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "c" is null
java.base/java.util.ArrayList.(ArrayList.java:181)
java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.Collection.toArray()" because "c" is null
at java.util.concurrent.FutureTask.report (FutureTask.java:122)
at java.util.concurrent.FutureTask.get (FutureTask.java:205)
at net.thucydides.core.reports.html.Reporter.generateReports (Reporter.java:56)
at net.thucydides.core.reports.html.Reporter.generateReportsFor (Reporter.java:32)
at net.thucydides.core.reports.html.HtmlAggregateStoryReporter.generateReportsForTestResultsIn (HtmlAggregateStoryReporter.java:222)
at net.thucydides.core.reports.html.HtmlAggregateStoryReporter.generateReportsForTestResultsFrom (HtmlAggregateStoryReporter.java:135)
at net.serenitybdd.maven.plugins.SerenityAggregatorMojo.generateHtmlStoryReports (SerenityAggregatorMojo.java:252)
at net.serenitybdd.maven.plugins.SerenityAggregatorMojo.execute (SerenityAggregatorMojo.java:195)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:301)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:127)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
.
.
.

@cliviu
Copy link
Collaborator

cliviu commented Jul 17, 2022

hi @sumit12071988 , can you reproduce the problem?

@sumit12071988
Copy link
Author

Hi @cliviu , Please find the Steps to reproduce the issue:

  1. Create a java program using Serenity and JUnit5 which reads test data using csv file. add the csv file using @CsvFileSource annotation as shown below
class b_DataDrivenTestingUsingCSVTest {
    @Managed(driver = "chrome", options = "--headless")
    WebDriver driver;

    TwoInputFieldForm twoInputFieldForm;

    @ParameterizedTest(name = "First element: {0} | Second element: {1} | Summation Result: {2}")   // {x} is the value from I/P parameter it will fetch during each iteration
    @CsvFileSource(files = "src/test/resources/testdata/calculations.csv", numLinesToSkip = 1)
    void shouldCalculateTheCorrectTotal(String a, String b, String calculatedTotal){
        twoInputFieldForm.open();

        twoInputFieldForm.enterA(a);
        twoInputFieldForm.enterB(b);
        twoInputFieldForm.getTotal();

        assertThat(twoInputFieldForm.displayedTotal()).isEqualTo(calculatedTotal);
    }
}
  1. Run the program from command line using the maven command mvn clean verify
  2. Monitor the O/p. You may notice that the execution will be successful, but issue is only with report generation.

I'm attaching a snapshot as well as entire console log for reference. Do let me know should you need any more details

Error.log
Result1

@Muschke
Copy link

Muschke commented Nov 24, 2022

Have you figured out what this error means?

@HimanshuSingour
Copy link

Have you solve this error? i am also facing same

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants