gpt4 book ai didi

java - Cucumber无法读取定义文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:01 25 4
gpt4 key购买 nike

我是 Cucumber 的初学者,我已经在 Maven 项目中编写了用于登录和访问主页的基本测试。我怀疑 POM.xml 存在一些一致性问题。

请找到下面的文件我已尝试对 pom 文件中的依赖项进行多种组合,但问题似乎仍然存在。

1) 步骤定义文件

package StepDefinition;

import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;


public class loginStepDefinition {

WebDriver driver;


@Given("^User is already on login page$")
public void user_already_on_login_page(){
System.setProperty("webdriver.chrome.driver","/Users/nilesh.gupta/Desktop/chromedriver" );
driver = new ChromeDriver();
driver.get("https://classic.crmpro.com");

}
@When("^Tittle of login page is Free CRM$")
public void tittle_login_page_is_Free_CRM() {
String tittle = driver.getTitle();
System.out.println("tittle is : " + tittle);
Assert.assertEquals("#1 Free CRM for Any Business: Online Customer Relationship Software", tittle);
}
@Then("^User enters username and password$")
public void user_enters_username_and_password() {
driver.findElement(By.xpath("/html/body/div[2]/div/div[3]/form/div/input[1]\n" )).sendKeys("naveenk");
driver.findElement(By.xpath("/html/body/div[2]/div/div[3]/form/div/input[2]\n" )).sendKeys("test@123");
}

@Then("^User clicks on login button$")
public void user_clicks_on_login_button() {
driver.findElement(By.className("btn btn-small")).click();
}

@Then("^User is on Home Page$")
public void user_is_on_Home_Page() {
String tittle= driver.getTitle();
System.out.println("tittle is : " + tittle );
Assert.assertEquals("CRMPRO", tittle);
}

}

  • 登录功能
  • Feature: Free CRM Login Feature

    Scenario: Free CRM Login Test Scenario

    Given User is already on login page
    When Tittle of login page is Free CRM
    Then User enters username and password
    Then User clicks on login button
    Then User is on Home Page



  • testrunner.java
  • package MyRunner;

    import org.junit.runner.RunWith;

    import io.cucumber.junit.Cucumber;
    import io.cucumber.junit.CucumberOptions;

    @RunWith(Cucumber.class)
    @CucumberOptions(
    features = "/Users/nilesh.gupta/eclipse-workspace/CucumberBDD/src/main/java/Features/login.feature",
    glue={"stepDefinition"}
    /*format={"pretty","html:test-output"}*/
    )
    public class testRunner {
    }

  • pom.xml
  • <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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>CucumberBDD</groupId>
    <artifactId>CucumberBDD</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

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

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <cucumber.version>4.8.0</cucumber.version>
    <selenium.version>3.5.3</selenium.version>
    </properties>

    <dependencies>

    <dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>${cucumber.version}</version>
    </dependency>

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

    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
    </dependency>

    <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>${selenium.version}</version>
    </dependency>
    </dependencies>
    </project>

  • 输出

  • There were undefined steps. You can implement missing steps with the snippets below:

    @Given("User is already on login page")
    public void user_is_already_on_login_page() {
    // Write code here that turns the phrase above into concrete actions
    throw new cucumber.api.PendingException();
    }

    @When("Tittle of login page is Free CRM")
    public void tittle_of_login_page_is_Free_CRM() {
    // Write code here that turns the phrase above into concrete actions
    throw new cucumber.api.PendingException();
    }

    @Then("User enters username and password")
    public void user_enters_username_and_password() {
    // Write code here that turns the phrase above into concrete actions
    throw new cucumber.api.PendingException();
    }

    @Then("User clicks on login button")
    public void user_clicks_on_login_button() {
    // Write code here that turns the phrase above into concrete actions
    throw new cucumber.api.PendingException();
    }

    @Then("User is on Home Page")
    public void user_is_on_Home_Page() {
    // Write code here that turns the phrase above into concrete actions
    throw new cucumber.api.PendingException();
    }

    最佳答案

    请尝试养成在测试文件夹 src/test/java 而不是 main 中编写测试代码的习惯。写入 src/main/java 的所有内容都会默认打包并交付给您的客户,而您放入 src/test/java 的所有内容都不会。

    功能选项可帮助 Cucumber 在项目文件夹结构中找到功能文件。如果功能文件位于深层文件夹结构中,请使用 features = “src/test/features”。

    胶水用于查找步骤定义文件。

    进行更改后,请引用下面的代码来获取您的运行程序文件。

    package MyRunner;   
    import org.junit.runner.RunWith;
    import cucumber.api.CucumberOptions;
    import cucumber.api.junit.Cucumber;

    @RunWith(Cucumber.class)
    @CucumberOptions(
    features = "src/test/features"
    ,glue={"src/test/stepDefinition"}
    ,monochrome = false
    )

    public class testRunner {

    }

    关于java - Cucumber无法读取定义文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58842824/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com