Programovanie

Ako pracovať s rámcom xUnit.Net

XUnit používam už dosť dlho a je to môj výberový rámec pre testovanie jednotiek. Je to nástroj na testovanie jednotiek s otvoreným zdrojom pre .Net framework, ktorý je kompatibilný s ReSharper, CodeRush, TestDriven.Net a Xamarin. Môžete využiť xUnit.Net na ľahké uplatnenie typu výnimky. Môžete tiež rozšíriť atribúty Fakt alebo Teória v xUnit.Net a poskytuje vynikajúcu podporu pre zápis parametrizovaných jednotkových testov. Tu je odkaz na úložisko Github pre xUnit.Net.

Tu je príklad, ako pracovať s xUnit.net v Visual Studio. Na túto ukážku budeme používať Visual Studio 2015, aj keď môžete pracovať aj s inými kompatibilnými verziami Visual Studio. Teraz postupujte podľa týchto jednoduchých krokov a nastavte svoje prostredie na prácu s xUnit.Net v Visual Studio.

  1. Otvorte Visual Studio 2015 UDE
  2. Vytvorte nový projekt typu „Knižnica tried“
  3. Uložte projekt s názvom
  4. Ďalej nainštalujte xUnit.Net prostredníctvom správcu balíkov NuGet

A je to! Ak chcete spustiť testy jednotiek v rámci Visual Studio IDE, môžete použiť xUnit.net runner pre Visual Studio. Tu je potrebné uviesť, čo potrebujete na inštaláciu balíka xUnit.net [Runner: Visual Studio] pomocou okna konzoly Správca balíkov:

Inštalačný balík xunit.runner.visualstudio - verzia 2.1.0

To je všetko, čo budete potrebovať na nastavenie prostredia, aby ste mohli vykonávať testy jednotiek xUnit.Net z prostredia Visual Studio IDE.

Fakty a teórie

Na rozdiel od populárneho atribútu [Test], ktorý by ste mohli poznať, na napísanie metód testovania jednotiek pomocou xUnit.net budete musieť použiť atribút [Fact]. Upozorňujeme, že web xUnit.net podporuje dva typy testov jednotiek: fakty a teórie.

Aj keď sa na testovanie invariantných podmienok používajú fakty, teórie sú testami, ktoré sú pravdivé pre konkrétny súbor údajov odovzdaných ako argument tejto metóde. Atribút [Fact] by ste zvyčajne používali na zápis jednotkových testov, ktoré neobsahujú argumenty metódy.

Atribút [Theory] však vyžaduje, aby sa ako argumenty metódy odovzdali jedna alebo viac inštancií DataAttribute. V zásade by ste chceli použiť atribút [Theory] na zápis dátových jednotkových testov. Testy jednotiek riadené dátami sú testy, ktoré sa vykonávajú na rôznych množinách dát.

Za predpokladu, že je nainštalovaný xUnit.Net a jeho bežec pre Visual Studio, poďme najskôr napísať jednoduchý test jednotky pomocou atribútu [Fact]. Zvážte nasledujúcu metódu testovania jednotiek - tu využijeme výhodu atribútu [Fact].

[Skutočnosť]

public void CheckEqualityTest ()

  {

Assert.Equal (10, súčet (5, 5));

  }

Metóda Sum akceptuje dve celé čísla a vráti ich súčet.

private int Sum (int x, int y)

  {

návrat x + y;

  }

Keď spustíte tento test, prejde test jednotky - môžete to vidieť v Prieskumníkovi testov Windows vo vašom Visual Studio IDE. Poďme teraz preskúmať, ako môžeme pracovať s teóriami na vykonávanie jednotkových testov, ktoré sú riadené údajmi.

Nasledujúci úryvok kódu ilustruje, ako môžete pracovať s testami jednotiek riadenými údajmi pomocou xUnit.Net.

[Theory, InlineData ("This is a data driven test", "data")]

public void CheckInputTest (vstup reťazca, reťazec reťazca)

 {

Assert.Equal (true, input.Contains (podreťazec));

 }

Prečítajte si útržok kódu uvedený vyššie. Všimnite si použitie atribútu [Theory]. Pokiaľ vaše jednotkové testy nie sú založené na údajoch, mali by ste sa vo svojich metódach jednotkového testu rozhodnúť pre atribút [Fact]. Všimnite si, ako boli parametre odovzdané v testovacej metóde jednotky riadenej dátami s názvom CheckInput. Atribút InlineData poskytuje údaje o zdrojovom kóde. V tomto príklade sa údaje odovzdávajú jednotkovej testovacej metóde prostredníctvom vložených hodnôt. Môžete mať aj viac atribútov InlineData - stačí ich oddeliť čiarkou. Tu je príklad, ako to môžete dosiahnuť.

[Theory, InlineData („This is a data driven test“, „data“),

InlineData („Toto je ďalšia množina údajov pre test riadený údajmi“, „údaje“)]

public void CheckInputTest (vstup reťazca, reťazec reťazca)

        {

Assert.Equal (true, input.Contains (podreťazec));

        }

Keď vykonáte vyššie uvedený test riadený údajmi, metóda CheckInputTest by sa vykonala dvakrát - raz pre každú sadu vstupných údajov.

$config[zx-auto] not found$config[zx-overlay] not found