xUnit

<PackageReference Include="Tracera.Xunit" Version="*" />

.NET ≥ 8 और xUnit.net v3 आवश्यक (ऑटोटेस्ट एडेप्टर देखें)। Tracera.Xunit NuGet पर।

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

प्रति टेस्ट असेंबली एक बार एडेप्टर रजिस्टर करें:

[assembly: TraceraXunit]
[assembly: TestPipelineStartup(typeof(TraceraXunitStartup))]

testCaseId और autotestName बाँधना

मानक xUnit API हमेशा की तरह उपयोग करें, और ग्लोबल प्रकार Tracera।

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

using Xunit;

public class LoginTests
{
    [Fact]
    [Tracera.Id(42, name: "e2e/login")]
    public void Login()
    {
        Assert.True(true);
    }
}

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

[Fact]
public void Login()
{
    Tracera.TestCase(42, "e2e/login");
    Assert.True(true);
}

Skip

स्टॉक xUnit skip उपयोग करें (Assert.Skip, [Fact(Skip = "…")], …)। Skip reason परिणाम में comment के रूप में जोड़ी जाती है।

स्टेप्स

Tracera.Step("…", () => { … }), Tracera.Step("…", async () => { … }) (async लैम्ब्डा का इंतज़ार होता है), या मेथड पर [Tracera.Step("…")] (sync और async Task)। [Tracera.Step] का शीर्षक खाली या छोड़ा हो तो स्टेप शीर्षक मेथड नाम बनता है; शीर्षक में {0} / {name} मेथड आर्गुमेंट से भरते हैं। Constructor और IAsyncLifetime.InitializeAsync → Setup; IDisposable / IAsyncDisposable → Teardown; टेस्ट मेथड बॉडी → Test. यदि IClassFixture / constructor / InitializeAsync टेस्ट बॉडी से पहले फ़ेल हो, घोषणात्मक रूप से बाउंड टेस्ट फिर भी Failed रिपोर्ट होते हैं (खाली स्टेप, परिणाम पर fixture त्रुटि)।

using Xunit;

public class CheckoutTests
{
    [Tracera.Step("add {sku}")]
    public void AddSku(string sku) { }

    [Fact]
    [Tracera.Id(10, name: "e2e/checkout")]
    public void 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");
});

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

हर [Theory] मेथड पर [Tracera.Id] रखें (हर पंक्ति के लिए वही id, या id बदलने पर अंदर Tracera.TestCase)। वैकल्पिक name में प्लेसहोल्डर हो सकते हैं: मेथड पैरामीटर से {login} (और अन्य नाम), या {param_id} — xUnit टेस्ट नाम। यदि name न लिखा हो, तो autotestName xUnit टेस्ट नाम का मान लेता है।

[Tracera.Id(42, name: "login as {login}")]
[Theory]
[InlineData("ok")]
[InlineData("sso")]
public void Login(string login)
{
    Assert.False(string.IsNullOrEmpty(login));
}