JUnit 5

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

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

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

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

प्रोजेक्ट में एक्सटेंशन की स्वचालित रजिस्ट्रेशन चालू करें (प्रति प्रोजेक्ट एक बार):

# src/test/resources/junit-platform.properties
junit.jupiter.extensions.autodetection.enabled=true

या स्पष्ट रूप से: @ExtendWith(TraceraExtension::class)।

testCaseId और autotestName बाँधना

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

घोषणा पर (पसंदीदा — टेस्ट जल्दी skip हो जाए तो भी बाइंड चलता है):

import dev.tracera.Tracera
import org.junit.jupiter.api.Test

class LoginTest {
    @Tracera.Id(42, name = "e2e/login")
    @Test
    fun login() {
        assert(true)
    }
}

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

import dev.tracera.Tracera
import org.junit.jupiter.api.Test

class LoginTest {
    @Test
    fun login() {
        Tracera.testCase(42, "e2e/login")
        assert(true)
    }
}

Skip

मानक JUnit skip इस्तेमाल करें (Assumptions.abort, @Disabled, …)। Skip reason परिणाम में comment के रूप में जुड़ता है।

स्टेप्स

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

import dev.tracera.Tracera
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test

class CheckoutTest {
    @BeforeEach
    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")
}

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

हर @ParameterizedTest मेथड पर @Tracera.Id लगाएँ (सभी पंक्तियों के लिए एक ही id, या id बदलने पर अंदर Tracera.testCase)। वैकल्पिक name में प्लेसहोल्डर हो सकते हैं: मेथड पैरामीटर नाम जैसे {login}, या {param_id} — JUnit टेस्ट नाम। यदि name न लिखा हो, तो autotestName JUnit टेस्ट नाम का मान लेता है।

@Tracera.Id(42, name = "login as {login}")
@ParameterizedTest
@ValueSource(strings = ["ok", "sso"])
fun login(login: String) {
    assert(login.isNotEmpty())
}