当前位置: 首页 > 知识库问答 >
问题:

Cucumber测试步骤在J-Unit中未显示,而在控制台中步骤已成功运行

狄凯
2023-03-14

我目前正在尝试创建我的第一个cucumber测试。在Java Eclipse中,我创建了一个包含以下内容的“功能文件”:

Feature: Login functionality DemoQA.com

Scenario: Verify if user is able to login to the DemoQA website
    Given A user is on DemoQA.com
    When User clicks MyAccount link
    Then User is taken to Login Page
    When User enters valid username and password
    Then User is able to login 

我还创建了以下testrunner文件:

@RunWith(Cucumber.class)
@CucumberOptions(   
        features = "src/test/Features/",
        glue = {"Tests"}
        )
public class CucumberRunner {
}

我还创建了我的步骤定义:

公共类LoginStepDefinitions{

@Given("A user is on DemoQA.com")
public void a_user_is_on_DemoQA_com() {

     System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.10.0-win64\\geckodriver.exe");

         WebDriver driver = new FirefoxDriver();
         WebDriverWait wait = new WebDriverWait(driver, 50);

         String url = "https://demoqa.com";

            //Launch the Online Store Website
            driver.get(url);

try {

            wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"logo-events\"]/a/img")));   
            driver.findElement(By.xpath("//*[@id=\"logo-events\"]/a/img"));
            System.out.println("User has succesfully opened DemoQA.com");

             } 

catch (Exception e) {
            System.out.println("User was not able to open DemoQA.com");

            }

}

@When("User clicks MyAccount link")
public void user_clicks_MyAccount_link() {
    // Write code here that turns the phrase above into concrete actions
    System.out.println("User clicks on the MyAccount link");
}

@Then("User is taken to Login Page")
public void user_is_taken_to_Login_Page() {
    System.out.println("User is succesfully taken to MyAccount login");
}

@When("User enters valid username and password")
public void user_enters_valid_username_and_password() {
    System.out.println("User enters valid credentials for MyAccount login");
}

@Then("User is able to login")
public void user_is_able_to_login() {
    // Write code here that turns the phrase above into concrete actions
    System.out.println("User is succesfully logged in");
}

}

当我将脚本作为Junit测试运行时,控制台会成功执行测试并显示结果:

User has succesfully opened DemoQA.com
[32m.[0mUser clicks on the MyAccount link
[32m.[0mUser is succesfully taken to MyAccount login
[32m.[0mUser enters valid credentials for MyAccount login
[32m.[0mUser is succesfully logged in
[32m.[0m
1 Scenarios ([32m1 passed[0m)
5 Steps ([32m5 passed[0m)
0m7.706s

但是当打开JUnit选项卡时,会发生两件事:

1)测试步骤似乎没有显示:

2)当我双击功能/方案步骤时,我收到一条消息:

在选定项目中找不到测试类

在阅读了关于这个主题的其他一些帖子后,我的第一个想法是我的功能文件没有位于正确的文件夹中,但我现在几乎把它移到了所有地方,似乎没有什么区别。

这是我在Eclipse中的当前结构:

有人能帮我吗?谢谢!

共有3个答案

景辰钊
2023-03-14

@CucumberOptions中的'jUnit="--step-通知"'也不适合我。

我这样做了:

@CucumberOptions(
stepNotifications = true,
strict = true,
features="path to feature file",
glue="path to step definition file")

以及它的工作。我的测试步骤也出现在Junit结果中。

strict=true--用于抑制警告:

此默认值将更改为 --strict,并且将删除 --non-strict。您可以使用 --strict 或 @CucumberOptions(strict = true) 来禁止显示此警告

商松
2023-03-14

我已经通过在 Runner 文件的@cucumberoptions中添加以下行自己解决了这个问题:junit =“--步骤通知”。在运行器文件中添加此行后,我的测试步骤也会出现在 Junit 结果中。问题可以关闭

长孙兴德
2023-03-14

@CucumberOptions中的答案“junit = " - step-notifications”对我不起作用。不过还好,我马上找到了解决办法。

@CucumberOptions
(
    features="path to feature file",

    glue="path to step definition file",

    stepNotifications = true
)

 类似资料:
  • 我不能为一个项目用cucumber执行简单的测试。我在Intellij13社区,使用cucumber插件。 我在features目录中编写了我的features文件,我还通过插件实现了创建它们的步骤。intellij可以识别功能文件中的我的步骤,它可以导航并转到步骤实现。当我尝试运行我的场景时,if无法声明“未定义的步骤”。任何帮助都将不胜感激。 以下是我如何组织我的项目:

  • 步骤1和步骤2是需要在安装网站上运行的安装步骤,并且只需要在chrome上运行一次来为场景创建安装。一旦完成,那么步骤3和步骤4需要在客户端网站上的不同浏览器/设备(即Chrome,Firefox,Safari,Mobile)上进行检查。 我的框架是用Cucumber和JavaScript编写的。我如何在cucumber中实现这一点,场景的一些步骤只在chrome上运行一次,其余的步骤应该在不同的

  • 而且我确实在IntelliJ中安装了Cucumber-Java插件。和IntelliJ Idea版本-IntelliJ Ultimate 2020.1My cucumber、junit和java版本在POM中: 运行测试 特征文件 谢谢,尼迪

  • 我试图找出是否有一个选项来找出当前正在执行的cucumber步骤,我试图根据步骤名称执行某些操作。 我可以看到StepDefinitionMatch类获得了这些步骤,但我不确定如何在运行时访问这些步骤。有人帮忙吗?如果有帮助,添加调用堆栈的快照。

  • 我想问一下,我是否有步骤定义类GithubHomePageSteps。与功能文件相对应的java。功能和通用步骤类CommonSteps。java在同一个名为steps的包中,那么如何运行测试用例。 在这里,在公共步骤类中,我说了setUp()中的chrome驱动程序初始化,以及清洁()中退出chrome驱动程序方法。我已经将@BeforeSuite和@AfterSuite注释分别放在setUp(