You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为无对外接口的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:45:05