xUnit.net je open-source testovací nástroj pro .NET aplikace (včetně .NET Core, 5/6/7/8+). Je navržen tak, aby podporoval moderní vývojové postupy, jako je TDD, a vynucoval čistý design testovacího kódu.
xUnit přichází s architekturou, která se zbavuje historických nánosů a zbytečných atributů:
—
V xUnit rozlišujeme dva základní typy testovacích metod:
Představuje invariantní test – tedy takový, který je vždy pravdivý a nevyžaduje žádné parametry.
[Fact]
public void OvereniVypoctu_Vzdy_VraciSpravnyVysledek() {
// Arrange
var calc = new Calculator();
// Act
var result = calc.Add(10, 20);
// Assert
Assert.Equal(30, result);
}
Představuje test, který je pravdivý pro konkrétní sadu dat. Umožňuje spustit stejnou testovací logiku s různými vstupy.
[Theory]
[InlineData(1, 2, 3)]
[InlineData(-1, 1, 0)]
[InlineData(0, 0, 0)]
public void Sctiani_RuznaData_VraciOcekavanySoucet(int a, int b, int ocekavany) {
var calc = new Calculator();
var vysledek = calc.Add(a, b);
Assert.Equal(ocekavany, vysledek);
}
—
Třída `Assert` v xUnit poskytuje širokou škálu metod pro ověření výsledků:
| Metoda | Účel |
|---|---|
| `Assert.Equal(exp, act)` | Ověří rovnost hodnot. |
| `Assert.True(bool)` | Ověří, zda je výraz pravdivý. |
| `Assert.NotNull(obj)` | Ověří, že objekt není null. |
| `Assert.Throws<T>(…)` | Ověří, že kód vyvolá konkrétní výjimku typu T. |
| `Assert.Contains(val, coll)` | Ověří, že kolekce nebo řetězec obsahuje danou hodnotu. |
—
Protože xUnit vytváří pro každý test novou instanci třídy, pro sdílení „drahých“ prostředků (např. databázové spojení) používáme tzv. Class Fixtures:
1. Vytvoříte třídu (např. `DbFixture`), která se postará o inicializaci. 2. Testovací třída implementuje rozhraní `IClassFixture<DbFixture>`. 3. xUnit vytvoří instanci `DbFixture` pouze jednou pro celou testovací třídu a předá ji do konstruktoru.
—
Testy xUnit lze spouštět mnoha způsoby:
Související články:
Tagy: programming dot-net testing xunit unit-test csharp