TestNG
dependencies {
testImplementation("dev.tracera:tracera-testng:<version>")
}
需要 JDK ≥ 17 和 TestNG ≥ 7(见 自动化测试适配器)。tracera-testng on Maven Central。
环境变量、运行模式与重试:自动化测试适配器。
重试 Env 键:TESTNG_RETRY。
监听器通过 ServiceLoader 注册。也可以添加 @Listeners(TraceraTestNgListener::class)。
绑定 testCaseId 与 autotestName
照常使用 TestNG 标准 API,并从 dev.tracera 导入 Tracera。
在声明时(推荐 — 即使测试体提前跳过也会绑定):
import dev.tracera.Tracera
import org.testng.annotations.Test
class LoginTest {
@Tracera.Id(42, name = "e2e/login")
@Test
fun login() {
assert(true)
}
}
在测试内:
import dev.tracera.Tracera
import org.testng.annotations.Test
class LoginTest {
@Test
fun login() {
Tracera.testCase(42, "e2e/login")
assert(true)
}
}
Skip
使用 TestNG 标准 skip(throw SkipException(…)、enabled = false 等)。Skip 原因会作为 comment 写入结果。
步骤
使用 Tracera.step("…") { … }、Tracera.suspendStep("…") { … }(协程),或在方法上使用 @Tracera.Step("…")(sync 与 suspend)。@Tracera.Step 标题为空或未写时,步骤标题使用方法名;标题中的 {0} / {name} 从方法参数填入。@BeforeMethod / @AfterMethod 内的步骤进入 准备 / 清理;测试内的步骤进入 测试。Suite / class 配置方法不上报。
import dev.tracera.Tracera
import org.testng.annotations.BeforeMethod
import org.testng.annotations.Test
class CheckoutTest {
@BeforeMethod
fun openShop() {
Tracera.step("open shop") { }
}
@Tracera.Step("add {sku}")
fun addSku(sku: String) {
}
@Tracera.Id(10, name = "e2e/checkout")
@Test
fun checkout() {
addSku("SKU-1")
Tracera.step("pay") { }
}
}
注释、错误与附件
注释、错误与附件:自动化测试适配器。
Tracera.comment("result-level note")
Tracera.error("result-level error text")
Tracera.step("open login") {
Tracera.comment("landed on login")
}
参数化测试
在使用 DataProvider 的 @Test 方法上放 @Tracera.Id,或在方法内调用 Tracera.testCase(当每行用例 id 不同时)。可选 name 可用方法实参中的 {arg} / {param_id}。若未指定 name,则 autotestName 取 TestNG 方法名。
@Tracera.Id(42, name = "login as {login}")
@Test(dataProvider = "logins")
fun login(login: String) {
assert(login.isNotEmpty())
}