Kotest

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

JDK ≥ 17 और Kotest ≥ 6 आवश्यक (ऑटोटेस्ट एडेप्टर देखें)। tracera-kotest Maven Central पर।

एनवायरनमेंट, रन मोड और रीट्राई: ऑटोटेस्ट एडेप्टर।

रीट्राई Env कुंजी: KOTEST_RETRY।

प्रोजेक्ट कॉन्फ़िग में एक्सटेंशन रजिस्टर करें:

import dev.tracera.TraceraKotestExtension
import io.kotest.core.config.AbstractProjectConfig

class ProjectConfig : AbstractProjectConfig() {
    override fun extensions() = listOf(TraceraKotestExtension())
}

testCaseId और autotestName बाँधना

मानक Kotest Spec API हमेशा की तरह इम्पोर्ट करें, और dev.tracera से Tracera।

घोषणा पर (पसंदीदा — FunSpec के लिए Spec-स्तरीय; AnnotationSpec @Test पर मेथड-स्तरीय):

import dev.tracera.Tracera
import io.kotest.core.spec.style.FunSpec

@Tracera.Id(42, name = "e2e/login")
class LoginSpec : FunSpec({
    test("login") {
        // …
    }
})

टेस्ट के अंदर:

import dev.tracera.Tracera
import io.kotest.core.spec.style.FunSpec

class LoginSpec : FunSpec({
    test("login") {
        Tracera.testCase(42, "e2e/login")
    }
})

Skip

मानक Kotest skip इस्तेमाल करें (enabled = { … }, Assume.that, …)। Skip reason परिणाम में comment के रूप में जुड़ता है।

स्टेप्स

Tracera.step("…") { … }, कोरूटीन के लिए Tracera.suspendStep("…") { … }, या मेथड पर @Tracera.Step("…") (sync और suspend) इस्तेमाल करें। @Tracera.Step में शीर्षक खाली या छोड़ा हो तो स्टेप का शीर्षक मेथड नाम होता है; शीर्षक में {0} / {name} मेथड आर्गुमेंट से भरते हैं। प्रति-टेस्ट हुक्स सेटअप / टीयरडाउन में जाते हैं; Spec-स्तरीय सूट हुक्स रिपोर्ट नहीं होते।

import dev.tracera.Tracera
import io.kotest.core.spec.style.AnnotationSpec

class CheckoutSpec : AnnotationSpec() {
    @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")
}

पैरामीटराइज़्ड टेस्ट

FunSpec में हर डेटा पंक्ति के लिए अलग टेस्ट बनाएँ: test("ok") { … }, test("sso") { … }। @Tracera.Id Spec क्लास पर लगाएँ; वैकल्पिक name में {param_id} हो सकता है — वही टेस्ट का नाम ("ok", "sso") भरता है। AnnotationSpec में @Test मेथड बिना आर्गुमेंट होते हैं, इसलिए {login} जैसे पैरामीटर प्लेसहोल्डर उपलब्ध नहीं — {param_id} Kotlin मेथड नाम है; पंक्ति फ़ील्ड नाम में लाने के लिए टेस्ट के अंदर Tracera.testCase कॉल करें। यदि name न लिखा हो, तो autotestName Kotest टेस्ट नाम का मान लेता है।

import dev.tracera.Tracera
import io.kotest.core.spec.style.FunSpec

@Tracera.Id(42, name = "login as {param_id}")
class LoginSpec : FunSpec({
    for (login in listOf("ok", "sso")) {
        test(login) {
            assert(login.isNotEmpty())
        }
    }
})