简体   繁体   English

使用 Cucumber 运行测试场景并生成 JVM 报告作为 Java 应用程序

[英]Using Cucmber to run test scenarios and generate JVM reports as Java Application

I am trying to build a java application which replicates the functionality of cucumber after I execute the command mvn clean install .我正在尝试构建一个 Java 应用程序,该应用程序在执行命令mvn clean install后复制黄瓜的功能。 Currently after doing mvn clean install , cucumber executes all scenarios and creates JVM report in a specified directory.目前在执行mvn clean install ,cucumber 执行所有场景并在指定目录中创建 JVM 报告。 But rather than doing mvn clean install I want to replicate exact same features by running my application jar.(Main method in java application jar should call cucumber classes and methods to execute test scenarios and generate report)但我想通过运行我的应用程序 jar 来复制完全相同的功能,而不是执行mvn clean install 。(java 应用程序 jar 中的主要方法应该调用黄瓜类和方法来执行测试场景并生成报告)

Following are pom.xml and class definitions which I am using to run test scenarios and generate test report using mvn clean install以下是我用来运行测试场景并使用mvn clean install生成测试报告的 pom.xml 和类定义

pom.xml pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>hellocucumber</groupId>
<artifactId>hellocucumber</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
    <cucumber.version>6.8.1</cucumber.version>
    <junit.version>4.13</junit.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>${cucumber.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>${cucumber.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<build>
  <plugins>  
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2.1</version>
        <executions>
            <execution>
                <id>package-jar-with-dependencies</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.example.mainclass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </execution>
        </executions>
    </plugin>
        
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
            <encoding>UTF-8</encoding>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>

    <plugin>
        <groupId>net.masterthought</groupId>
        <artifactId>maven-cucumber-reporting</artifactId>
         <version>3.6.0</version>
        <executions>
          <execution>
            <id>execution</id>
            <phase>verify</phase>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <projectName>cucumber-jvm-example</projectName>
              <!-- this is similar report as jenkins report -->
              <outputDirectory>AllReports/cucumber-JVM-reports</outputDirectory>
               <!-- to generate better report-similar to Jenkin report,maven-cucumber-reporting plug-in is used,which reads the generated cucumber.json file in local directory and generates cucumber-JVM-reports -->
              <cucumberOutput>AllReports/report.json</cucumberOutput>
              <skippedFails>true</skippedFails>
              <enableFlashCharts>false</enableFlashCharts>
              <buildNumber>42</buildNumber>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
</build>

RunCucumberTest.java运行CucumberTest.java

package hellocucumber;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {"pretty", "html:AllReports/cucumber-html-report",
          "json:AllReports/report.json", "junit:AllReports/cucumber.xml"},
features = "testcases/features")
public class RunCucumberTest {  
}

StepDefinitions.java步骤定义.java

package hellocucumber;

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
import static org.junit.Assert.*;

class IsItFriday {
    static String isItFriday(String today) {
        return "Friday".equals(today) ? "TGIF" : "Nope";
    }
}

public class StepDefinitions {
    private String today;
    private String actualAnswer;

    @Given("today is {string}")
    public void today_is(String today) {
        this.today = today;
    }

    @When("I ask whether it's Friday yet")
    public void i_ask_whether_it_s_Friday_yet() {
        actualAnswer = IsItFriday.isItFriday(today);
    }

    @Then("I should be told {string}")
    public void i_should_be_told(String expectedAnswer) {
        assertEquals(expectedAnswer, actualAnswer);
    }
}

Cucumber core comes with a Commandline interface . Cucumber 核心带有一个命令行界面 For usage instructions use:有关使用说明,请使用:


mvn exec:java                                  \
    -Dexec.classpathScope=test                 \
    -Dexec.mainClass=io.cucumber.core.cli.Main \
    -Dexec.args="--help"

Or a main method:或者一个主要的方法:

import io.cucumber.core.cli.Main;

public class Example {
    public static void main(String[] args) {
        byte status = Main.run("--help");
        System.exit(status);
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用Maven和小胡瓜并行运行黄瓜jvm测试方案? - How to run cucumber jvm test scenarios in parallel using Maven and courgette? 如何使用Gradle并行运行黄瓜jvm测试场景? - How to run cucumber jvm test scenarios in parallel using Gradle? 如何从命令行和jenkins运行cucmber测试 - How to run cucmber test from command line and in jenkins 无法使用 TestNG 测试运行器运行单个 Cucumber 场景 - Can't run individual Cucumber scenarios using TestNG test runner 使用 Cucumber JVM 运行测试时出现 UndefinedStepException - UndefinedStepException when run test using Cucumber JVM 如何在Java应用程序中运行BIRT报告? - How to run BIRT reports in a java application? 使用Java生成Oracle报告xml - Generate Oracle reports xml using java 使用异常处理Java REST API的应用程序和业务失败方案 - handling application and business failure scenarios for a java REST API using exceptions 有没有办法获取要在 cucumber JVM 的 @BeforeClass 注释中运行的场景列表 - Is there a way to get the list of scenarios that are to be run in the @BeforeClass annotation in cucumber JVM 尝试使用TestNG中的ExtentReports生成测试报告时获取NullPointerException - Getting NullPointerException when trying to generate test reports using ExtentReports in TestNG
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM