Programování

Jak pracovat s frameworkem xUnit.Net

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.

  1. Otevřete Visual Studio 2015 UDE
  2. Vytvořit nový projekt typu „Knihovna tříd“
  3. Uložte projekt s názvem
  4. 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.