java - 我无法运行我的 Cucumber jvm 报告

标签 java eclipse maven cucumber

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>ToolsQA</groupId>
<artifactId>CucumberFramework</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>CucumberFramework</name>
<url>http://maven.apache.org</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.11.0</version>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm-deps</artifactId>
        <version>1.0.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>3.1.2</version>
    </dependency>
    <dependency>
        <groupId>com.vimalselvam</groupId>
        <artifactId>cucumber-extentsreport</artifactId>
        <version>3.0.2</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.4</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-picocontainer</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.12.1</version>
    </dependency>
</dependencies>

<build>
    <resources>
        <resource>
            <directory>src/main/java/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>

                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
        <plugin>
            <groupId>net.masterthought</groupId>
            <artifactId>maven-cucumber-reporting</artifactId>
            <version>3.16.0</version>
            <executions>
                <execution>
                    <id>execution</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <projectName>cucumber-jvm-example</projectName>
                        <outputDirectory>${project.build.directory}/cucumber-JVM-reports</outputDirectory>
                        <cucumberOutput>${project.build.directory}/cucumber.json</cucumberOutput>
                        <checkBuildResult>true</checkBuildResult>
                        <skippedFails>true</skippedFails>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我使用的代码如下:

my TestRunner class
    @RunWith(Cucumber.class)
    @CucumberOptions(plugin = {
            "com.cucumber.listener.ExtentCucumberFormatter:target/cucumber-reports/report.html" ,"json:target/cucumber.json"}, features = "Features", monochrome = true, tags = {
            "@US_IEITF-6646_AttachDocAndPreviewandSubmit,@US_IEITF-6444_Labelcheck" }, glue = "stepDef", strict = false)
    public class TestRunner {
    //extends AbstractTestNGCucumberTests

        public static WebDriver driver;
        private TestNGCucumberRunner testRunner;
        public ExtentTest log = null;
        private Scenario scenario;
        private TestNGCucumberRunner testNGCucumberRunner;


    @BeforeClass
    public void setUP() {
        System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
        testRunner = new TestNGCucumberRunner(TestRunner.class);

    }
    @Before
    public void before(Scenario scenario) {
        this.scenario = scenario;
}
@Test(description = "Form 10CCC", dataProvider = "features")
    public void login(CucumberFeatureWrapper cFeature) {
        testRunner.runCucumber(cFeature.getCucumberFeature());

    }
@DataProvider(name = "features")
    public Object[][] getFeatures() {
        return testRunner.provideFeatures();
    }

@AfterClass
    public void tearDown() throws Exception {
        testRunner.finish();

        Reporter.loadXMLConfig("./extent-config.xml");
        Reporter.setSystemInfo("User Name", System.getProperty("user.name"));
        Reporter.setSystemInfo("Time Zone", System.getProperty("user.timezone"));
        Reporter.setSystemInfo("Machine", "Windows 10" + "64 Bit");
        Reporter.setSystemInfo("Selenium", "3.7.0");
        Reporter.setSystemInfo("Maven", "3.5.2");
        Reporter.setSystemInfo("Java Version", "1.8.0_151");
}

我正在生成报告,但它给出了异常空指针和 n 控制台构建成功,没有异常 附上我的报告供引用

最佳答案

您使用的是旧版本的cucumber,请尝试使用cucumber4。 修改您的 pom.xml,如下所示:

 <cucumber.version>4.0.0</cucumber.version>
 <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
 <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>${cucumber.version}</version>
 </dependency>

由于 testNg 的新 cucumber 适用于场景而不是功能,因此您需要修改 Runner 类,例如:

@Test(dataProvider = "scenarios")
    public void scenarios(PickleEventWrapper pickleEventWrapper, CucumberFeatureWrapper cucumberFeatureWrapper) {
        testNGCucumberRunner.runScenario(pickleEventWrapper.getPickleEvent());
    }
@BeforeClass(alwaysRun = true)
    public void precondition() {
        System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
        testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
    }
@DataProvider
    public Object[][] scenarios() {
        return testNGCucumberRunner.provideScenarios();
    }

并改变你的 plugin = {"json:target/cucumber.json"}plugin = {"json:target/cucumber-reports/cucumber.json"} 试试这个并告诉它是否有帮助。

关于java - 我无法运行我的 Cucumber jvm 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58267197/

相关文章:

java - 使用进程生成器从 java 运行 cmd 命令

java - 整理我的 Java 项目

java - 从 `file.encoding` 设置 `pom.xml`

maven - 覆盖配置文件中 maven-jar-plugin 的 <excludes> 配置

java - 调整 JTable 列的宽度

java - 如何使用java读取Google/Yahoo邮件收件箱?

eclipse - 关于运行配置中的 Eclipse 和类路径的问题

java - Maven 和 Java 版本设置——哪个解决方案更好?

java - 如何使不同ip的http请求相同的url?

java - 创建 Eclipse 模板以在范围内打印变量