Uživatelské nástroje

Nástroje pro tento web


xunit

xUnit.net Framework

xUnit.net je moderní testovací nástroj pro platformu .NET, navržený s důrazem na čistotu kódu, rozšiřitelnost a soulad s moderními programovacími praktikami. Jeho autory jsou James Newkirk (původní autor NUnit) a Brad Wilson.

1. Hlavní filozofie xUnit

Na rozdíl od starších frameworků přináší xUnit několik zásadních změn, které vedou k lepším testovacím návykům:

  • Bez atributu [TestFixture]: Třída s testy nepotřebuje speciální označení. Každá veřejná třída může obsahovat testy.
  • Izolace testů: Pro každý jednotlivý test se vytváří nová instance třídy. Tím je zaručeno, že testy neovlivňují jeden druhého skrze sdílený stav (vlastnosti třídy).
  • Konstruktor místo [SetUp]: Namísto speciálních metod pro přípravu prostředí se používá standardní konstruktor třídy. Pro úklid (cleanup) se používá rozhraní `IDisposable`.

2. Základní atributy a syntaxe

xUnit rozlišuje dva hlavní typy testů:

[Fact]

Používá se pro testy, které jsou vždy pravdivé (nemají žádné parametry).

[Fact]
public void Je_Sude_Cislo_Vraci_True() {
    // Arrange
    int cislo = 4;
    // Act & Assert
    Assert.True(cislo % 2 == 0);
}

[Theory]

Používá se pro data-driven testy (testy s parametry). To umožňuje spustit stejný test s různými vstupními daty.

[Theory]
[InlineData(4, true)]
[InlineData(5, false)]
public void Test_Sudosti(int cislo, bool ocekavanyVysledek) {
    bool vysledek = (cislo % 2 == 0);
    Assert.Equal(ocekavanyVysledek, vysledek);
}

3. Assertace (Ověřování)

xUnit používá statickou třídu `Assert`. Mezi nejpoužívanější metody patří:

  • `Assert.Equal(expected, actual)` – Porovnání hodnot.
  • `Assert.Throws<ExceptionType>(() ⇒ …)` – Ověření, že kód vyvolá očekávanou výjimku.
  • `Assert.Contains(substring, string)` – Kontrola, zda text obsahuje podřetězec.
  • `Assert.Empty(collection)` – Kontrola, zda je kolekce prázdná.

4. Sdílení kontextu (Fixtures)

Pokud potřebujete sdílet nákladnou operaci (např. připojení k databázi) mezi více testy, xUnit k tomu nabízí mechanismus Class Fixtures:

1. Vytvoříte třídu `DatabaseFixture`.
2. Testovací třída implementuje rozhraní `IClassFixture<DatabaseFixture>`.
3. Framework předá instanci fixture do konstruktoru testovací třídy.

5. Srovnání s NUnit a MSTest

Funkce xUnit NUnit MSTest
Značka testu `[Fact]` `[Test]` `[TestMethod]`
Příprava (Setup) Konstruktor `[SetUp]` `[TestInitialize]`
Izolace Nová instance pro každý test Stejná instance Stejná instance
Parametrické testy `[Theory]` `[TestCase]` `[DataTestMethod]`

6. Integrace v IDE

xUnit je plně integrován do:

  • Visual Studio: Pomocí Test Exploreru.
  • VS Code: Pomocí rozšíření .NET Core Test Explorer.
  • Příkazová řádka: Pomocí příkazu `dotnet test`.

Související články:

Tagy: programming dot-net testing xunit unit-test csharp

xunit.txt · Poslední úprava: autor: admin