使用 Cucumber JVM 运行测试时出现 UndefinedStepException

2024-03-11

我使用 Cucumber+Junit+Appium 开发移动应用程序的测试。当我尝试使用 Cucumber 和 JUnit runner 运行测试时,我收到:io.cucumber.junit.UndefinedStepException: The step "I install the application" is undefined. You can implement it using the snippet(s) below:

我尝试了媒体博客和堆栈问题中的一些解决方案,但这没有帮助。

我有一个项目结构:

src
 |-main
 |--java
 |---{project-name}
 |----config
 |----models
 |----screens
 |----services
 |-test
 |--java
 |---{project-name}
 |----helpers
 |----stepDefinitions
 |-----LoginStep.java
 |-----BaseStep.java
 |-----LoginStep.java
 |----RunCucumber.java
 |--resources
 |---feature
 |----Login.feature 

运行Cucumber.java

package com.mobile.automation.framework;

import com.google.inject.Guice;
import com.mobile.automation.framework.module.ServiceModules;
import com.mobile.automation.framework.service.AppiumServer;
import com.mobile.automation.framework.config.drivers.DriverFactory;
import com.mobile.automation.framework.module.ScreensModule;
import io.appium.java_client.AppiumDriver;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
        strict = true,
        monochrome = true,
        glue = "src.test.java.com.mobile.automation.framework.stepDefinition",
        features = "src/test/resources/feature",
        plugin = {"pretty", "html:target/cucumber-report/cucumber.html",
                "json:target/cucumber-report/cucumber.json",
                "junit:target/cucumber-report/cucumber.xml"})
public class RunCucumber {
    public static AppiumDriver driver;

    @Before
    public void setUpDriver() {
        init();
        new AppiumServer().startServer();
        driver = new DriverFactory().getDriver();
    }

    @After
    public void tearDownDriver() {
        if (driver != null) {
            driver.quit();
            new AppiumServer().stopServer();
        }
    }

    private void init() {
        Guice.createInjector(
                new ScreensModule(driver),
                new ServiceModules(driver)
        ).injectMembers(this);
    }
}

登录功能

Feature: Sign In feature

  Background:
    Given I install application
    And I enable all network activity
    Then I am on Sign Page

  Scenario: Sign In scenario
    Given I am go to the Login Page
    And I fill valid user data using "Config"
    And I click sign in button

    Then I am login in the application

登录步骤.java

package com.mobile.automation.framework.stepDefinition;

import javax.inject.Inject;

import com.mobile.automation.framework.config.ProjectConfig;
import com.mobile.automation.framework.models.User;
import com.mobile.automation.framework.screens.DashboardScreen;
import com.mobile.automation.framework.screens.SignInScreen;
import io.cucumber.java.ParameterType;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;

/**
 * @author Tomash Gombosh
 */
public class LoginStep {
    @Inject
    private SignInScreen signInScreen;
    @Inject
    private DashboardScreen dashboardScreen;

    @Given("^I am go to the Login Page$")
    public void iAmGoToTheLoginPage() {
        dashboardScreen.tapLogin();
    }

    @And("I fill valid user data using {string} {string}")
    public void iFillValidUserDataUsing(String userName, String password) {
        signInScreen.fillLogin(userName, password);
    }

    @And("I fill valid user data using {string}")
    @ParameterType("Config")
    public void iFillValidUserDataUsing() {
        signInScreen.fillLogin(new User(data -> {
            data.setEmail(new ProjectConfig().getBaseUser());
            data.setPassword(new ProjectConfig().getBaseUserPassword());
        }));
    }

    @And("I click sign in button")
    public void iClickSignInButton() {
        signInScreen.clickLogin();
    }

    @Then("I am login in the application")
    public void iAmLoginInTheApplication() {
        assertThat(signInScreen.isDisplayed()).isEqualTo(true);
    }

}

Login 类上的一些步骤丢失了,但那是因为我想将所有代码都放在问题中。

我本来希望运行该功能,但实际上这是行不通的。


通常src.test.java不是包名称的一部分。尝试使用:

glue = "com.mobile.automation.framework.stepDefinition",

而且由于 Cucumber 默认会在跑步者包中搜索胶水,因此也可以完全删除胶水。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Cucumber JVM 运行测试时出现 UndefinedStepException 的相关文章

  • Netbeans 8.1 Gnome 3 GTK+ UI 字体和选项卡高度

    我刚刚在运行 GNOME 3 桌面的 Ubuntu 16 04 上安装了 NetBeans 8 1 如果可能的话 我想继续使用 IDE 的 GTK 外观和感觉 但 UI 上的字体 尤其是选项卡中的字体 太小且重叠 我尝试添加 fontsiz
  • TreeMap 删除所有大于某个键的键

    在项目中 我需要删除键值大于某个键的所有对象 键类型为Date 如果重要的话 据我所知TreeMapJava中实现的是红黑树 它是一种二叉搜索树 所以我应该得到O n 删除子树时 但除了制作尾部视图并一一删除之外 我找不到任何方法可以做到这
  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • Android studio - 如何保存先前活动中选择的数据

    这是我的代码片段 这Textview充当按钮并具有Onclicklistner在他们 当cpu1000时Textview单击它会导致cpu g1000其代码如下所示的类 public class Game 1000 extends AppC
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 如何在java中将日期格式从YYMMDD更改为YYYY-MM-DD? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从机器可读代码中获取日期格式为 YYMMDD 如何将其更改为 YYYY MM DD 例如我收到 871223 YYMMDD 我想把它改成
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • 如何在 ant 中为 junit 测试设置 file.encoding?

    我还没有完全完成file encoding 和 ant https stackoverflow com questions 1339352 how do i set dfile encoding within ants build xml
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • 提高 PostgreSQL 1 亿数据左连接查询性能

    我在用Postgresql 9 2 version Windows 7 64 bit RAM 6GB 这是一个Java企业项目 我必须在我的页面中显示订单相关信息 有三个表通过左连接连接在一起 Tables TV HD 389772 行 T
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • 轻松的反应

    我有一个与这里描述的类似的案例 动态更改RESTEasy服务返回类型 https stackoverflow com questions 3786781 dynamically change resteasy service return
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • selenium-webdriver 与 webdriverjs 有什么区别(以及何时使用)?

    我是一位使用 selenium webdriver 的经验丰富的专业人士 我正在探索有关如何测试 javascript 应用程序的更多选项 我发现了 webdriverJs 不幸的是 我不明白这两者 2 之间有什么区别 有人可以解释一下何时
  • java XMLSerializer 避免复杂的空元素

    我有这个代码 DocumentBuilderFactory factory DocumentBuilderFactory newInstance DocumentBuilder builder factory newDocumentBuil
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 特殊字符(夏威夷语“Okina”)导致奇怪的字符串行为

    The 夏威夷语报价 https en wikipedia org wiki CA BBOkina当 T SQL 与字符串函数结合使用时 它会出现一些奇怪的行为 这里发生了什么 我错过了什么吗 其他角色是否也遇到同样的问题 SELECT U
  • 打包时只生成一场战争

    默认情况下 JHipster 在打包阶段生成 2 个 war your project version war 和 your project version war original 第一个是可执行 jar 第二个是可以在 servlet
  • Clojure 中如何泄漏内存?

    为了周四在湾区 Clojure 聚会上的演讲 我正在整理一份 Clojure 中泄漏内存的方法列表 到目前为止我有 抓住无限序列的头部 通过在循环中调用 lambda 创建大量泛型类 这仍然是一个问题 保存对未使用数据的引用 还有什么 通过
  • 显式遵守 Codable 删除了结构上的成员初始化程序生成

    Given struct Foo let bar Bar 我得到了一个方便的初始化程序来使用 let foo Foo bar Bar But if Bar不是它本身Codable 或者由于某些其他原因我需要明确实现Codable on Fo
  • React - 反应脚本 publicPath

    是否有可能覆盖开发环境的反应脚本中的 publicPath 我使用 symfony 并且在 twig 中包含了 React 应用程序 所以我必须更改资产来提供服务http localhost 3000 static js bundle js
  • SetWindowPos() 函数不移动窗口?

    我有一个对话框 我想将其放置在另一个对话框中 并相对于主对话框上的其中一个控件进行定位 void CspAceDlg DrawResultsArea CWnd pTabCtl GetDlgItem IDC BUILDTABS CRect r
  • 由于 GCM SenderId Android 无法生成 APK 版本

    我在我的应用程序中实现了 GCM Google Cloud Messaging Google Play 服务库已自动生成values xml其中我的senderId is
  • 如何在android VideoView中显示Youtube视频? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在使用 android 应用程序
  • 使用 Jquery 更改选择值

    我正在尝试使用 Jquery 更改表单中 选择 输入的值 但是当它更改时 该更改的函数不起作用 HTML
  • servlet 的根 URl

    我想从其中一个 servlet 获取 Web 应用程序的根 url 如果我将应用程序部署在 www mydomain com 中 我想获得像 http www mydomain com http www mydomain com 同样的事情
  • 使用 Neo4j 的 Cypher 返回我的朋友和朋友的朋友

    我有具有双向关系的节点 如下 我正在尝试创建一个查询 我想返回特定节点的所有后续节点及其后续节点的后续节点 3 希望深度 例如假设这些关系 gt 符号跟随 A gt B B gt A B gt C C gt B C gt D D gt C
  • Spring Data Mongo - 如何映射继承的 POJO 实体?

    我对 Spring 还很陌生 但我想在这个项目上尝试一下 我有一个 MongoDB 数据库 其中填充了相当复杂的文档 我想使用 Spring data Mongo 来查询 没有其他 CRUD 操作 数据库 我已经使用 POJO 描述了我的文
  • 如何一次处理 RxJS 流 n 个项目,并在完成一个项目后,再次自动填充回 n 个项目?

    我有一个事件流 我想调用一个函数 为每个事件返回一个承诺 问题是这个函数非常昂贵 所以我想一次最多处理 n 个事件 这个卵石图可能是错误的 但这就是我想要的 x x xxxxxxx x gt Events p p pppp p p p p
  • 从版本控制中检出项目失败

    我正在 Mac 上使用 Android Studio 1 0 2 为 Google Glass 开发应用程序 我一直在尝试从 Google 在 github 上提供的推荐项目之一开始 但我遇到了问题 说明显示要打开 Android Stud
  • 如何知道两个向量之间的角度?

    我正在用 pygame 制作小游戏 并且制作了一把围绕其中心旋转的枪 我的问题是我想让枪自行旋转到敌人的方向 但我无法做到这一点 因为我找不到枪和敌人之间的角度来使枪旋转到敌人的方向 我搜索过 发现我必须使用atan2但我没有找到任何工作代
  • pyinstaller不显示图像和图标

    我阅读了许多关于如何通过修改规范文件来包含图像和图标的教程 尽管我无法成功 我编写了一个程序 我想使用 pyinstaller 使其可执行并在其他计算机上运行它 pyinstaller 不包含主 exe 文件中的图像和图标文件 当我在自己的
  • 默认情况下,核心数据获取 (NSFetchRequest) 是否以任何特定方式排序?

    我有一个基本问题 假设您有一个 NSFetchRequest 想要在 NSManagedObjectContext 上执行 如果获取请求没有显式设置任何排序描述符 那么对象每次都是随机的 还是会按照最初添加到托管对象上下文的顺序将其吐出到数
  • WCF GZip 压缩请求/响应处理

    如何让 WCF 客户端处理已被 IIS GZipped 或 Deflated 的服务器响应 在 IIS 上 我按照说明进行操作here http weblogs asp net owscott archive 2004 01 12 5791
  • 使用 SoapUI 和 Windows 身份验证测试 Web 服务

    是否可以包含 Windows 域凭据来使用 SOAP UI 测试我的 Web 服务 我找到了一个属性页 但 IIS 只是响应 错误的凭据 SoapUI 似乎不能直接使用 NTLM 身份验证 但您可以使用 Burp Suite 等代理来为您进
  • 使用 Cucumber JVM 运行测试时出现 UndefinedStepException

    我使用 Cucumber Junit Appium 开发移动应用程序的测试 当我尝试使用 Cucumber 和 JUnit runner 运行测试时 我收到 io cucumber junit UndefinedStepException