如何使用 Cucumber Java 进行 UI 测试?

1 工程结构与 Maven 依赖

该示例工程结构如下:

 

text

复制代码

cucumber-ui-test-demo ├─ src/test │ ├─ java │ │ └─ com.example.tests │ │ ├─ stepdefs │ │ │ ├─ LoginStep.java │ │ │ └─ CreateIssueStep.java │ │ ├─ pages │ │ │ ├─ LoginPage.java │ │ │ └─ IssuesPage.java │ │ ├─ utils │ │ │ ├─ GoogleAuthenticatorUtil.java │ │ │ └─ WebDriverFactory.java │ │ │ └─ ConfigUtil.java │ │ ├─ hooks │ │ │ └─ ScreenshotHook.java │ │ └─ TestRunner.java │ └─ resources │ ├─ features │ │ └─ github-issues.feature │ └─ config.properties └─ pom.xml

下面简单介绍一下各个包、文件夹及文件的功能:

  • 包 stepdefs

    该包用于放置 Step Definitions 实现类,即 Cucumber 特性文件中定义的各个步骤对应的 Java 实现。LoginStep.java 负责登录相关步骤的实现,CreateIssueStep.java 负责创建 Issues 相关步骤的实现。注意,该示例工程做了分层设计,具体 Selenium 操作浏览器的逻辑未在该包下实现,而是统一放置于 pages 包下,该包下的类只负责调用 pages 包下相应的实现。

  • 包 pages

    该包用于放置具体的页面对象(Page Object)类,负责调用 Selenium 操作浏览器。

  • 包 utils

    该包用于放置工具类。GoogleAuthenticatorUtil.java 用于 Google Authenticator Code 的生成;WebDriverFactory.java 用于统一获取 Selenium WebDriverConfigUtil.java 用于读取配置文件信息。

  • 包 hooks

    该包用于放置 Cucumber 钩子,使用钩子可以为每个场景(Scenario)或步骤(Step)添加前置或后置逻辑。该包下的 ScreenshotHook.java 负责为 Cucumber 场景中的每个步骤执行后对当前网页截图并将其附加到最终报告里。

  • 文件 TestRunner.java

    该类为测试工程入口。

  • 文件夹 resources/features

    该文件夹为 Cucumber 特性文件所在文件夹。

  • 文件 resources/config.properties

    该文件为工程配置文件,用于放置 GitHub 账号、密码以及双因子鉴权秘钥。

该示例工程用到的依赖如下:

 

xml

复制代码

<dependencies> <!-- cucumber --> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>${cucumber.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>${cucumber.version}</version> <scope>test</scope> </dependency> <!-- selenium --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifact

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值