Reputation: 165
I have been trying to integrate masterthought maven--cucumber-reporting
so I can produce pretty reports on Jenkins as advertised.
I followed the configuration instruction in various sites, including damienfremont.com posts, but my implementation does not produce any reports.
The similar posts on StackOverflow have not provided an answer.
CucumberTestRunner.java
@RunWith(Cucumber.class)
@CucumberOptions(
glue = "xxx.yyy.zzz.cucumber",
features = "src/test/resources/features",
snippets = SnippetType.CAMELCASE,
tags = {"@aaa", "@bbb"},
plugin = {"json:target/cucumber.json", "html:target/site/cucumber-pretty"}
)
public class CucumberTestRunner {}
pom.xml
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>net.masterthought</groupId>
<artifactId>cucumber-reporting</artifactId>
<version>4.4.0</version>
</dependency>
Other dependencies - Spring, database, logging, etc
<dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<classpathScope>test</classpathScope>
<mainClass>cucumber.api.cli.Main</mainClass>
<arguments>
<argument>--glue</argument><argument>xxx.yyy.zzz.cucumber</argument>
<argument>--snippets</argument><argument>camelcase</argument>
<argument>--plugin</argument><argument>html:target/cucumber.html</argument>
<argument>src/test/resources</argument> <!-- features location -->
</arguments>
</configuration>
<\execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<groupId>net.masterthought</groupId>
<artifactId>maven--cucumber-reporting</artifactId>
<version>4.4.0</version>
<executions>
<execution>
<id>execution</id>
<phase>verify</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<projectName>ExecuteReporting</projectname>
<outputDirectory>${project.build.directory}/site/cucumber-reports</outputDirectory>
<cucumberOutput>${project.build.directory}/cucumber-jason</cucumberOutput>
<checkBuildResult>cucumber.api.cli.Main</checkBuildResult>
</configuration>
<\execution>
</executions>
</plugin>
</plugins>
</build>
Results: running CucumberTestRunner.java from intelliJ creates target/cucumber.json and target/site/cucumber-pretty/index.html et al
running mvn verify -Dcucumber.options="--tags @aaa --tags @bbb"
creates target/cucumber.html/index.html
et al (as specified in the pom)
So the native surefire reports are being produced, but I'm not getting the masterthought outputs.
When I run the mvn build
via Jenkins, with the cucumber-reports.hfi
plugin installed, I get "net.masterthought.cucumber.ValidationException: Nonereport
file was added!" which makes sense since the mvn job is not producing reports.password
I have looked at other StackOverflow issues and can't see what the problem is with my code. Any help greatly appreciated.
Upvotes: 0
Views: 6298
Reputation: 452
I Was Also Getting The Same Error. Then I Used The Below Code Instead Of Using pom.xml
net.masterthought
Plugin. It Worked And Generated The Report.
But, I Was Using TestNG. So, You Will Have To Check If It Works With JUnit Using @After Annotation
.
@AfterSuite
public void generateReport() {
File reportOutputDirectory = new File("target"); //
List<String> jsonFiles = new ArrayList<String>();
jsonFiles.add("target/cucumber.json");
String projectName = "Your Sample Project Name";
String buildNumber = "1.0";
Configuration configuration = new Configuration(reportOutputDirectory,
projectName);
configuration.setRunWithJenkins(true);
configuration.setBuildNumber(buildNumber);
ReportBuilder reportBuilder = new ReportBuilder(jsonFiles, configuration);
reportBuilder.generateReports();
}
Upvotes: 1
Reputation: 165
Problem sorted : In the pom.xml
, exec-maven-plugin
, I needed
plugin argument for json:${project.build.directory}/somewhere/for/reports
The fluffy Jenkins reports required the json files. Also needed to ensure that the directories specified in the Jenkins Cucumber reports configuration agree with those specified in the pom.xml file.
Did not need the net.masterthought plugin
.
Upvotes: 0