Už nějakou dobu používám xUnit a je to můj výběrový rámec testování Unit. Je to nástroj pro testování jednotek s otevřeným zdrojovým kódem pro .NET Framework, který je kompatibilní s ReSharper, CodeRush, TestDriven.Net a Xamarin. Výhodou xUnit.Net můžete snadno uplatnit typ výjimky. Můžete také rozšířit atributy Fact nebo Theory v xUnit.Net a poskytuje vynikající podporu pro psaní parametrizovaných testů jednotek. Tady je odkaz na úložiště Github pro xUnit.Net.
Zde je návod, jak pracovat s xUnit.net v sadě Visual Studio. Pro tuto ukázku budeme používat Visual Studio 2015, i když můžete pracovat také s jinými kompatibilními verzemi Visual Studio. Nyní postupujte podle těchto jednoduchých kroků k nastavení prostředí pro práci s xUnit.Net v sadě Visual Studio.
- Otevřete Visual Studio 2015 UDE
- Vytvořit nový projekt typu „Knihovna tříd“
- Uložte projekt s názvem
- Dále nainstalujte xUnit.Net prostřednictvím Správce balíčků NuGet
A to je vše! Chcete-li spustit testy jednotek v rámci Visual Studio IDE, můžete použít běžec xUnit.net pro Visual Studio. Tady je to, co byste museli specifikovat pro instalaci balíčku xUnit.net [Runner: Visual Studio] pomocí okna konzoly Správce balíčků:
Instalační balíček xunit.runner.visualstudio - verze 2.1.0
To je vše, co potřebujete k nastavení prostředí, abyste mohli provádět testy jednotek xUnit.Net z prostředí IDE sady Visual Studio.
Fakta a teorie
Na rozdíl od populárního atributu [Test], který byste mohli znát, budete muset k napsání metod testování jednotky pomocí xUnit.net použít atribut [Fact]. Všimněte si, že xUnit.net podporuje dva typy testů jednotek: fakta a teorie.
Zatímco fakta se používají k testování invariantních podmínek, teorie jsou testy, které platí pro konkrétní sadu dat předaných jako argument metodě. Atribut [Fact] byste obvykle používali k zápisu testů jednotek, které nemají žádné argumenty metody.
Atribut [Theory] však vyžaduje, aby jedna nebo více instancí DataAttribute byly předány jako argumenty metody. V zásadě byste chtěli použít atribut [Theory] pro psaní testů jednotek řízených daty. Testy jednotek řízené daty jsou ty, které se provádějí na různých sadách dat.
Za předpokladu, že je nainstalován xUnit.Net a jeho běžec pro Visual Studio, pojďme nejprve napsat jednoduchý test jednotky pomocí atributu [Fact]. Zvažte následující metodu testování jednotky - zde využijeme výhod atributu [Fact].
[Skutečnost]
public void CheckEqualityTest ()
{
Assert.Equal (10, součet (5, 5));
}
Metoda Sum přijímá dvě celá čísla a vrací jejich součet.
private int Sum (int x, int y)
{
návrat x + y;
}
Když spustíte tento test, projde test jednotky - můžete vidět, že v Průzkumníku testů Windows ve vašem Visual Studio IDE. Pojďme nyní prozkoumat, jak můžeme pracovat s teoriemi k provádění testů jednotek, které jsou řízeny daty.
Následující fragment kódu ukazuje, jak můžete pracovat s jednotkovými testy řízenými daty pomocí xUnit.Net.
[Theory, InlineData ("This is a data driven test", "data")]
public void CheckInputTest (vstup řetězce, řetězec řetězce)
{
Assert.Equal (true, input.Contains (podřetězec));
}
Viz výše uvedený fragment kódu. Všimněte si použití atributu [Theory]. Pokud vaše jednotkové testy nejsou založeny na datech, měli byste se v metodách jednotkových testů rozhodnout pro atribut [Fact]. Všimněte si, jak byly parametry předány v testovací metodě jednotky řízené daty s názvem CheckInput. Atribut InlineData poskytuje data zdrojového kódu. V tomto příkladu jsou data předávána metodě testování jednotky prostřednictvím vložených hodnot. Můžete mít také více atributů InlineData - stačí je oddělit čárkou. Tady můžete dosáhnout.
[Theory, InlineData ("This is a data driven test", "data"),
InlineData („Toto je další sada dat pro test řízený daty“, „data“)]
public void CheckInputTest (vstup řetězce, řetězec řetězce)
{
Assert.Equal (true, input.Contains (podřetězec));
}
Když provedete výše uvedený test řízený daty, metoda CheckInputTest by byla provedena dvakrát - jednou pro každou sadu vstupních dat.