mikec
mikec

Reputation: 165

Java/cucumber reporting not producing reports using masterthought

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

Answers (2)

kwishna
kwishna

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

mikec
mikec

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

Related Questions