如何为无对外接口的Java库编写Cucumber验收测试
基于Cucumber编写Java库验收测试的实操步骤
第一步:引入Cucumber相关依赖
如果使用Maven管理项目,在pom.xml中添加如下依赖即可:
<dependencies> <!-- Cucumber 核心依赖 --> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.14.0</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit-platform-engine</artifactId> <version>7.14.0</version> <scope>test</scope> </dependency> <!-- JUnit 5 基础依赖 --> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-suite-api</artifactId> <version>1.10.0</version> <scope>test</scope> </dependency> </dependencies>
第二步:编写Feature描述文件
在src/test/resources下和业务代码包路径对应的目录中,新建helloworld.feature文件,用自然语言描述验收规则:
Feature: HelloWorld服务功能验证 验证HelloWorld类对外提供的方法返回符合预期 Scenario: 调用helloWorld方法返回正确字符串 Given 我已初始化HelloWorld类实例 When 我调用helloWorld无参方法 Then 方法返回结果应为"Hello World"
第三步:编写步骤定义(胶水代码)
新建步骤定义类,把Feature文件中的自然语言步骤和实际Java调用逻辑绑定:
package com.your.business.package; import io.cucumber.java.en.Given; import io.cucumber.java.en.When; import io.cucumber.java.en.Then; import static org.junit.jupiter.api.Assertions.assertEquals; public class HelloWorldStepDef { private HelloWorld helloWorld; private String result; @Given("我已初始化HelloWorld类实例") public void initHelloWorld() { helloWorld = new HelloWorld(); } @When("我调用helloWorld无参方法") public void callHelloWorldMethod() { result = helloWorld.helloWorld(); } @Then("方法返回结果应为{string}") public void checkResult(String expected) { assertEquals(expected, result); } }
第四步:编写测试运行入口类
新建测试启动类,配置Cucumber运行参数:
package com.your.business.package; import org.junit.platform.suite.api.ConfigurationParameter; import org.junit.platform.suite.api.IncludeEngines; import org.junit.platform.suite.api.SelectPackages; import org.junit.platform.suite.api.Suite; import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME; @Suite @IncludeEngines("cucumber") @SelectPackages("com.your.business.package") // 替换为实际业务代码和步骤定义所在的包路径 @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty") // 配置输出美观的测试日志 public class CucumberTest { }
第五步:运行测试
直接在IDE中运行上述入口类,或者执行mvn test命令即可触发验收测试,测试结果会直接输出在控制台。后续新增测试场景只需要在Feature文件中补Scenario描述,对应补充步骤定义逻辑即可,纯Java库不需要模拟外部接口,直接调用目标类方法做断言就可以完成验收验证。
内容的提问来源于stack exchange,提问作者keepmoving
相关产品推荐
相关产品推荐

