TestNG
dependencies {
testImplementation("dev.tracera:tracera-testng:<version>")
}
JDK ≥ 17 और TestNG ≥ 7 आवश्यक (ऑटोटेस्ट एडेप्टर देखें)। tracera-testng Maven Central पर।
एनवायरनमेंट, रन मोड और रीट्राई: ऑटोटेस्ट एडेप्टर।
रीट्राई Env कुंजी: TESTNG_RETRY।
लिस्नर ServiceLoader से रजिस्टर होता है। आप @Listeners(TraceraTestNgListener::class) भी जोड़ सकते हैं।
testCaseId और autotestName बाँधना
मानक TestNG API हमेशा की तरह इम्पोर्ट करें, और dev.tracera से Tracera।
घोषणा पर (पसंदीदा — टेस्ट जल्दी skip हो जाए तो भी बाइंड चलता है):
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 reason परिणाम में 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 लगाएँ, या पंक्ति अनुसार id बदलने पर अंदर Tracera.testCase कॉल करें। वैकल्पिक name में मेथड आर्ग्स से {arg} / {param_id} हो सकते हैं। यदि name न लिखा हो, तो autotestName TestNG मेथड नाम का मान लेता है।
@Tracera.Id(42, name = "login as {login}")
@Test(dataProvider = "logins")
fun login(login: String) {
assert(login.isNotEmpty())
}