NUnit
<PackageReference Include="Tracera.NUnit" Version="*" />
Требуются .NET ≥ 8 и NUnit ≥ 4 (см. Адаптеры автотестов). Tracera.NUnit на NuGet.
Переменные окружения, режим прогона и повторы: Адаптеры автотестов.
Ключ Env при повторе: NUNIT_RETRY.
Предпочтительнее атрибут сборки — так адаптер завершит созданный им прогон, когда автотесты закончатся. Атрибут только на классе тестов всё равно отправляет результаты, но завершение прогона может отложиться до выхода процесса:
[assembly: TraceraNUnit]
[TraceraNUnit] // optional on a test class when the assembly attribute is present
public class LoginTests
{
// …
}
Привязка testCaseId и autotestName
Используйте стандартные API NUnit как обычно и глобальный тип Tracera.
В объявлении (предпочтительно — привязка сработает, даже если тест сразу уйдёт в skip):
using NUnit.Framework;
[assembly: TraceraNUnit]
public class LoginTests
{
[Test]
[Tracera.Id(42, name: "e2e/login")]
public void Login()
{
Assert.That(true);
}
}
Внутри теста:
[Test]
public void Login()
{
Tracera.TestCase(42, "e2e/login");
Assert.That(true);
}
Skip
Используйте стандартный skip NUnit (Assert.Ignore, Assert.Inconclusive, [Ignore], …). Причина skip добавляется в результат как comment.
Шаги
Используйте Tracera.Step("…", () => { … }), Tracera.Step("…", async () => { … }) (адаптер ждёт завершения async-лямбды), или укажите [Tracera.Step("…")] на методе (sync и async Task). Если у [Tracera.Step] заголовок пустой или не указан, в отчёт идёт имя метода; плейсхолдеры {0} / {name} в заголовке заполняются из аргументов метода. Шаги внутри [SetUp] / [TearDown] попадают в секции результата Предусловие / Постусловие; шаги внутри теста — в Тест. Шаги [OneTimeSetUp] / [OneTimeTearDown] в отчёт не попадают; если OneTimeSetUp падает, декларативно привязанные тесты всё равно уходят как Failed (пустые шаги, ошибка setup на результате).
using NUnit.Framework;
[assembly: TraceraNUnit]
public class CheckoutTests
{
[SetUp]
public void OpenShop()
{
Tracera.Step("open shop", () => { });
}
[Tracera.Step("add {sku}")]
public void AddSku(string sku) { }
[Test]
[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");
});
Параметризованные тесты
Укажите [Tracera.Id] на каждом методе с [TestCase] / [TestCaseSource] (один id на все строки или Tracera.TestCase внутри, если id разный). В необязательном name можно использовать плейсхолдеры: {login} (и другие имена аргументов) из параметров метода, либо {param_id} — имя теста в NUnit (в примере ниже — Login("ok") / Login("sso")). Если name не указан, то autotestName принимает значение имени теста в NUnit.
[Tracera.Id(42, name: "login as {login}")]
[TestCase("ok")]
[TestCase("sso")]
public void Login(string login)
{
Assert.That(login, Is.Not.Empty);
}