标签: cucumber-java

黄瓜如何查找特征文件是否已执行?任何Java方法?

 @Before
  public void quit_if_tagged_scenario_failed(Scenario scenario) {
    if (!isTagged(scenario) && prevScenarioFailed)
      throw new IllegalStateException("An important scenario has failed!     Cucumber wants to quit.");
  }
Run Code Online (Sandbox Code Playgroud)

我正在使用这种方法来检查之前的场景是否失败。如果失败,我想跳过该功能文件中的所有场景。所以这里的问题是,如果我正在运行两个功能文件,则功能文件中的最后一个场景失败,下一个功能的第一步也将失败,因为黄瓜上一个场景来自过去的功能文件失败。你知道如何处理这种情况吗?对你的帮助表示感谢。

java cucumber cucumber-jvm cucumber-junit cucumber-java

1
推荐指数
1
解决办法
1028
查看次数

以编程方式读取黄瓜 Jvm 标签

我正在尝试使用 Gatling 重用我现有的集成测试黄瓜小黄瓜场景进行性能测试。集成测试是用 restassured.io 和 Cucumber JVM 编写的。我想要做的是向现有的集成测试添加一个新标签,比如@Performance_REQ_noOfRequest_RESP_responseTime。

所以我想知道有没有办法以编程方式读取黄瓜标签,以便我可以提取请求和响应值并将其发送到 Gatling 测试。

示例 Gherkin is Feature:获取员工信息的端点

@Regression @Performance_Req_1000_Resp_100s
场景:获取员工
当我向 /api/employees 发送请求
然后我应该看到员工列表

cucumber cucumber-jvm cucumber-java java-annotations

1
推荐指数
1
解决办法
1698
查看次数

从黄瓜Java中的场景大纲示例表中解析整数列表

我必须使用Java黄瓜来编写BDD测试,我想从示例表的每一行中解析一个整数列表,然后使用最新版本的Cucumber(4.2.6)将此列表传递给我的step方法。因此,我在功能文件中获得了以下步骤定义:

Scenario Outline: Some scenarion
    Given a list of integer: <integer_list> 

    Examples:
      | integer_list   |
      | 2, 3, 5, 6     | 
      | 3, 12, 45, 5, 6| 
Run Code Online (Sandbox Code Playgroud)

我的代码中需要这样的内容:

   @Given("a list of integer: (\\d+.)")
    public void storeIntegerList(List<Integer> integers) {
     System.out.println(integers.size());
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到一种将这些值解析为列表的方法。要么找不到step方法(我尝试过很多不同的正则表达式),要么抛出异常,通知我我的数字无法转换为列表。

解决方法是将列表解析为字符串,然后将其拆分。但是,我无法想象在2019年没有更好的方法可以做到这一点。

解决方法:

Scenario Outline: Some scenarion
    Given a list of integer: "<integer_list>" 

    Examples:
      | integer_list   |
      | 2, 3, 5, 6     | 
      | 3, 12, 45, 5, 6| 


@Given("a list of integer: {string}")
    public void storeIntegerList(String integers) {
        List<String> …
Run Code Online (Sandbox Code Playgroud)

java cucumber cucumber-jvm cucumber-junit cucumber-java

1
推荐指数
1
解决办法
719
查看次数

将 Cucumber 4.5.x 升级到 v5.0.0

我正在尝试将 Cucumber 4.5.x 的旧测试框架升级到更新版本。该项目是 Maven、IntelliJ、Java、Selenium 和 Cucumber 项目。

但 Cucumber 似乎要么故意误导我,要么他们的文档对我来说难以理解。

首先,我升级到版本 5.0.0,重新加载 Maven 依赖项并执行 mvn clean install。

我立即发现

import io.cucumber.core.api.Scenario was gone. 
Run Code Online (Sandbox Code Playgroud)

经过一番手动搜索,我发现新的路径似乎是

import io.cucumber.core.gherkin.Scenario;
Run Code Online (Sandbox Code Playgroud)

然后我去了6.0.0版本,这里似乎没有任何场景库。

查看文档,似乎声称 Scenario 位于

io.cucumber.java.Scenario
Run Code Online (Sandbox Code Playgroud)

但这对于 4.5.x 版本来说甚至都不正确,那么我到底如何找到导入的新路径呢?

更新:

在尝试升级之前,我的插件列表中有以下内容:

io.cucumber:cucumber-core:4.5.2
io.cucumber:cucumber-expressions:7.0.2
io.cucumber:cucumber-dependencies:1.1.14
io.cucumber:cucumber-datatable_1.1.14 
io.cucumber:cucumber.gherkin:5.1.0
io.cucumber:cucumber-tag-expressions:1.1.1
Run Code Online (Sandbox Code Playgroud)

在我的 pom.xml 中:

<properties>
    <java.version>11</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <selenium.version>4.3.0</selenium.version>
    <cucumber.version>4.5.2</cucumber.version>
    <junit5.version>5.5.1</junit5.version>
</properties>
Run Code Online (Sandbox Code Playgroud)

更改 pom.xml 中的版本号并重新加载是正确的方法吗?或者我应该用项目插件列表中的较新版本替换该插件(在 IntelliJ 中)?

我应该升级任何其他 cucumber-x 插件吗?

替代方案 1:

我在 pom.xml 文件中将版本更改为 5.0.0。

  • 其他黄瓜插件的插件版本会自动更新。

构建项目:确定运行 mvn clean install -> 出现以下错误:

cannot find symbol
[ERROR]   symbol:   class Scenario …
Run Code Online (Sandbox Code Playgroud)

cucumber maven cucumber-jvm selenium-webdriver cucumber-java

1
推荐指数
1
解决办法
722
查看次数

如何使用 @tags 在 Cucumber 框架中运行 testrunner 类文件中的多个标签?

@RunWith(Cucumber.class)
@CucumberOptions( plugin = {"pretty","html:target/html/automation"},
                features = {"resource/***.feature"},
                glue={},
                tags={"@login","@Products"}
        )
Run Code Online (Sandbox Code Playgroud)

这是我的功能文件

@登录

功能:登录应用程序

场景:这是验证应用程序是否已成功登录给定导航到 Panasonic 应用程序然后验证应用程序的标题然后注销应用程序

@产品

功能:登录应用程序

背景:用户应该导航到应用程序的主页

给定用户使用有效凭据登录主页

单击主页上的目录链接时

场景:验证产品页面是否可以创建十个以上产品

并检查目录的子菜单是否显示在标题中

并检查我的产品目录表

java selenium cucumber-junit selenium-webdriver cucumber-java

0
推荐指数
1
解决办法
5万
查看次数

Java Cucumber:如何从单个场景中的所有步骤中获取字符串参数值

我正在寻找一种方法来获取在每个步骤中传递的所有参数,然后再输入我的功能文件中每个方案的实际方案.

示例功能文件:

Feature: Login action
  Background:
    When "{login url}" is open

  Scenario: Registered user provides valid username and password
    Given user enters username "{username}" and password "test password"
    And user clicks on "btnLogin"
    Then user is logged in
Run Code Online (Sandbox Code Playgroud)

我想得到的参数:

  • {login url}
  • {用户名}
  • 密码
  • btnLogin

    到目前为止我尝试了什么:

    我尝试过使用一个常见的钩子,它将被我的所有场景自动使用:

    public class ScenarioHook {
    
        public ScenarioHook() {
        }
    
        @Before
        public void setupScenario(Scenario scenario) throws InterruptedException {
        //Here I am currently watching the {scenario} object and I can see all the …
    Run Code Online (Sandbox Code Playgroud)
  • cucumber gherkin feature-file cucumber-java

    0
    推荐指数
    1
    解决办法
    1万
    查看次数

    运行黄瓜测试时,为什么会跳过它们?

    我对 Cucumber 测试和 Spring boot 都很陌生。我在 pom.xml 文件 `
    CucumberIntergration.test中添加了 cucumber-java 和 cucumber-junit

    @RunWith(Cucumber.class)
    @CucumberOptions(features = "src/test/resources/features/", plugin = 
    {"pretty", "html:target/cucumber"},dryRun = true,glue = 
    {"com.villvay.gudppl.ws"})
    
    Run Code Online (Sandbox Code Playgroud)

    这是 Version.feature 文件,用于 Api 版本验证的功能文件。

    Feature: the version can be retrieved
     Scenario: client makes call to GET /version
     Given the client makes the api call for verification
     When  the client retrieve the response
     Then  the client verify the response
    
    Run Code Online (Sandbox Code Playgroud)

    这是 VersionStepDefinitions.java 文件的一部分,我在其中找到了我的测试。

      @Given("^the client makes the api call for verification")
      public void wants(){
        LOG.info("Client wants …
    Run Code Online (Sandbox Code Playgroud)

    java maven cucumber-junit spring-boot cucumber-java

    0
    推荐指数
    1
    解决办法
    3659
    查看次数

    黄瓜 4 可选单词?

    @Then("a topic is (not) displayed on the chat icon of the menu")
    
    Run Code Online (Sandbox Code Playgroud)

    基本上我希望如果可能的话不要是可选的?以前是(是|不是)。

    添加 is|is not 是捕获组的一部分,在 stepdef 中作为字符串输入。

    java selenium cucumber-java

    0
    推荐指数
    1
    解决办法
    2340
    查看次数

    如何在Cucumber 4.0中通过类型注册表添加数据表

    对于黄瓜 3.0 我正在使用

    typeRegistry.defineDataTableType(DataTableType.entry(CustomData.class));
    
    public class CustomData {
        private int id;
        private int val;
        private Region region;
        private Boolean isExisting;
        private String type;
    
      //getter and setter methods
     }
    
    Run Code Online (Sandbox Code Playgroud)

    如何在 Cucumber 4.0.0 中将其转换为 configureTypeRegistry 的一部分

    我在特征文件中的步骤为

     When I set the custom data
      | region | id | val | isExisting | type  |
      | NA     | 2  | 10  | true       | custom|
    
    Run Code Online (Sandbox Code Playgroud)

    cucumber cucumber-java

    0
    推荐指数
    1
    解决办法
    396
    查看次数