2

When I do gradle test I get an error on the following scenario. I have included the stacktrace below.

@Domain
    @NotImplemented
    Scenario Outline: Generating longitude and latitude of a property
     Given I am a Landlord "John"
     And I have entered the address <ADDRESS>
     And I have entered the postcode <POSTCODE>
     When I submit the form
     Then the property should be listed on the system
     And with the postcode <POSTCODE>
     And should generate the latitude <LATITUDES>
     And longitude <LONGITUDES>



    Examples:
          |ADDRESS            |POSTCODE  |LATITUDES   |LONGITUDES   |
          |"60 Lancaster Road |"LE1 7HA" |"52.6257172"|"1.12760520" |
          |"17 Fleet Street"  |"HP20 2PA"|"51.8204651"|"-0.8132931" |
          |"300 Welford Road" |"LE2 6EG" |"52.6143175"|"-1.1248989" |

Stacktrace

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':test'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:62)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
        at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
        at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:155)
        at org.gradle.internal.Factories$1.create(Factories.java:22)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:152)
        at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:33)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:100)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:94)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:94)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47)
        at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
        at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
        at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
        at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
        at org.gradle.launcher.Main.doAction(Main.java:33)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
Caused by: org.gradle.api.GradleException: Could not generate test report to 'C:\Users\Majid\Desktop\Github-Projects\Merge\co2015-group-06-repo\springMvc\build\reports\tests'.
        at org.gradle.api.internal.tasks.testing.junit.report.DefaultTestReport.generateFiles(DefaultTestReport.java:90)
        at org.gradle.api.internal.tasks.testing.junit.report.DefaultTestReport.generateReport(DefaultTestReport.java:45)
        at org.gradle.api.tasks.testing.Test.executeTests(Test.java:558)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:226)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
        ... 57 more
Caused by: org.gradle.api.UncheckedIOException: Could not write to file 'C:\Users\Majid\Desktop\Github-Projects\Merge\co2015-group-06-repo\springMvc\build\reports\tests\packages\| "17 Fleet Street" | "HP20 2PA" | "51.8204651" | "-0.html'.
        at org.gradle.internal.IoActions$TextFileWriterIoAction.execute(IoActions.java:115)
        at org.gradle.internal.IoActions$TextFileWriterIoAction.execute(IoActions.java:91)
        at org.gradle.internal.IoActions.writeTextFile(IoActions.java:38)
        at org.gradle.reporting.HtmlReportRenderer$DefaultHtmlReportContext.renderHtmlPage(HtmlReportRenderer.java:117)
        at org.gradle.api.internal.tasks.testing.junit.report.DefaultTestReport$2.render(DefaultTestReport.java:82)
        at org.gradle.api.internal.tasks.testing.junit.report.DefaultTestReport$2.render(DefaultTestReport.java:74)
        at org.gradle.reporting.HtmlReportRenderer.render(HtmlReportRenderer.java:42)
        at org.gradle.api.internal.tasks.testing.junit.report.DefaultTestReport.generateFiles(DefaultTestReport.java:74)
        ... 67 more
Caused by: java.io.FileNotFoundException: C:\Users\Majid\Desktop\Github-Projects\Merge\co2015-group-06-repo\springMvc\build\reports\tests\packages\| "17 Fleet Street" | "HP20 2PA" | "51.8204651" | "-0.html (The filename, directory name, or volume label syntax is incorrect)
        at org.gradle.internal.IoActions$TextFileWriterIoAction.execute(IoActions.java:108)
        ... 74 more

I think its because it cant handle longs and negative numbers.However I removed the quotation marks however still came out with the same error.

dijam
  • 658
  • 1
  • 9
  • 21
  • I think you have to convert the strings to numbers within the step definitions. I don't know gradle so I won't tell you how. – Dave McNulla Mar 29 '16 at 19:31

2 Answers2

2

Gradle is upset because it can’t write a file. The file name is generated from your scenario name. Your scenario name is constructed from the parameters you have in your outline. In this case, "17 Fleet Street" "HP20 2PA" "51.8204651" "-0.8132931”. The file name Gradle tries to write to is:

C:\Users\Majid\Desktop\Github-Projects\Merge\co2015-group-06-repo\springMvc\build\reports\tests\packages\| "17 Fleet Street" | "HP20 2PA" | "51.8204651" | "-0.html (The filename, directory name, or volume label syntax is incorrect)

Which is strange filename for a Windows file.

Your problem is a combination of Windows having opinions about file names and Cucumber that tries to construct a file name given the parameters for a row in your scenario outline.

Looking at your scenario, I would start with simplifying it. I don’t see anything special with your three rows, two of them looks like duplication to me. I would therefore not use a scenario outline but a regular scenario, at least to start with. If needed, then I would perhaps introduce a scenario outline. But it is possible that I wouldn’t and instead have two scenarios where their names would indicate what it is I specifically is trying to validate with that scenario.

Remember that a scenario outline is just syntactical sugar for many scenarios.

More about scenario outlines can be found at https://github.com/cucumber/cucumber/wiki/Scenario-Outlines

Thomas Sundberg
  • 4,098
  • 3
  • 18
  • 25
2

As @thomas-sundberg suggested (and as you've discovered), Windows balks at certain filename characters that Cucumber uses in it's test names.

Fortunately, this is only occurring when gradle's test task is writing the Html DirectoryReport test output reports. You can turn it off by setting the following in your build.gradle:

// turn off html reports... windows can't handle certain cucumber test name characters.
test.reports.getHtml().enabled = false

Don't worry, gradle will still run your tests, and still write out the JUnitXmlReport reports!

Community
  • 1
  • 1
Nick Grealy
  • 24,216
  • 9
  • 104
  • 119