Cucumber JVM

dependencies {
    testImplementation("dev.tracera:tracera-cucumber:<version>")
}

需要 JDK ≥ 17 和 Cucumber ≥ 7(见 自动化测试适配器)。tracera-cucumber on Maven Central。

环境变量与运行模式:自动化测试适配器。

Cucumber-JVM 没有标准重试 API — 没有 CUCUMBER_RETRY Env 键。

注册插件:

cucumber.plugin=dev.tracera.TraceraCucumberPlugin

或通过 @CucumberOptions(plugin = ["dev.tracera.TraceraCucumberPlugin"])。

绑定 testCaseId 与 autotestName

在 Scenario 上放标签(推荐):

@tracera.id:42
@tracera.name:e2e%2Flogin
Scenario: Login
  Given the user opens login

可选的 @tracera.name: 需 URL 编码。若未指定名称标签,则 autotestName 取 Scenario 名称。

在步骤或钩子内:

import dev.tracera.Tracera

Tracera.testCase(42, "e2e/login")

Skip

使用 Cucumber 标准 skip / pending。Skip 原因会作为 comment 写入结果。

步骤

Gherkin 步骤映射到结果的 测试 区。用 Tracera.step("…") { … }、Tracera.suspendStep("…") { … }(协程),或在 glue 方法上使用 @Tracera.Step("…")(sync 与 suspend)进行嵌套。@Tracera.Step 标题为空或未写时,步骤标题使用方法名;标题中的 {0} / {name} 从方法参数填入。场景的 Before / After 钩子映射到 准备 / 清理。Feature / 套件钩子不上报。

import dev.tracera.Tracera
import io.cucumber.java.en.When

class CheckoutSteps {
    @Tracera.Step("add {sku}")
    fun addSku(sku: String) {
    }

    @When("the user checks out with {string}")
    fun checkout(sku: String) {
        addSku(sku)
        Tracera.step("pay") { }
    }
}

注释、错误与附件

注释、错误与附件:自动化测试适配器。

Tracera.comment("result-level note")
Tracera.error("result-level error text")
Tracera.step("open login") {
    Tracera.comment("landed on login")
}

参数化测试

每一行 Examples 的 Scenario 名称由 Cucumber 填入 <…>。在 Outline 或 Scenario 上放固定的 @tracera.id:;若每行 id 不同,则调用 Tracera.testCase。

@tracera.id:42
Scenario Outline: Login as <login>
  Given the user signs in as "<login>"
  Examples:
    | login |
    | ok    |
    | sso   |