Kako raditi s xUnit.Net framework-om

Već neko vrijeme koristim xUnit i to je moj odabrani okvir za testiranje jedinice. To je alat za jedinstveno testiranje otvorenog koda za .Net framework koji je kompatibilan s ReSharper, CodeRush, TestDriven.Net i Xamarin. Možete iskoristiti xUnit.Net da biste lako potvrdili vrstu iznimke. Također, atribute činjenica ili teorije možete proširiti u xUnit.Net i pruža izvrsnu podršku za pisanje parametriziranih jediničnih testova. Evo veze na spremište Github za xUnit.Net.

Evo kako raditi s xUnit.net u Visual Studiju. Za ovu demonstraciju koristit ćemo Visual Studio 2015, iako možete raditi i s drugim kompatibilnim verzijama Visual Studija. Sada slijedite ove jednostavne korake za postavljanje svog okruženja za rad s xUnit.Netom u Visual Studiju.

  1. Otvorite Visual Studio 2015 UDE
  2. Stvorite novi projekt tipa “Biblioteka razreda”
  3. Spremite projekt s imenom
  4. Zatim instalirajte xUnit.Net putem NuGet Package Manager

I to je to! Za pokretanje jediničnih testova u Visual Studio IDE-u možete koristiti xUnit.net pokretač za Visual Studio. Evo što biste trebali navesti za instalaciju paketa xUnit.net [Pokretač: Visual Studio] pomoću prozora konzole Upravitelj paketa:

Install-Package xunit.runner.visualstudio -Version 2.1.0

To je sve što će vam trebati da postavite svoje okruženje tako da možete izvršavati xUnit.Net jedinične testove unutar Visual Studio IDE-a.

Činjenice i teorije

Suprotno popularnom atributu [Test] koji vam je možda poznat, morat ćete upotrijebiti atribut [Fact] da biste napisali svoje jedinice metode testiranja pomoću xUnit.net. Imajte na umu da xUnit.net podržava dvije vrste jediničnih testova: činjenice i teorije.

Iako se činjenice koriste za testiranje invarijantnih uvjeta, teorije su testovi koji vrijede za određeni skup podataka prosljeđenih kao argument metode. Tipično biste koristili atribut [Fact] za pisanje jediničnih testova koji nemaju argumente metode.

Međutim, atribut [Theory] treba jednu ili više instanci DataAttribute da se proslijede kao argumenti metode. U osnovi biste željeli koristiti atribut [Theory] za pisanje jedinstvenih testova vođenih podacima. Jedinstveni testovi vođeni podacima su oni koji se izvode na različitim skupovima podataka.

Pod pretpostavkom da su xUnit.Net i njegov pokretač za Visual Studio instalirani, napišimo prvo jednostavan jedinični test pomoću atributa [Fact]. Razmotrite sljedeću metodu jediničnog ispitivanja - ovdje ćemo iskoristiti atribut [Fact].

[Fact]

 public void CheckEqualityTest()

  {

     Assert.Equal(10, Sum(5, 5));

  }

Metoda zbroja prihvaća dvije cijele brojeve i vraća njihov zbroj.

  private int Sum(int x, int y)

  {

    return x + y;

  }

Kada pokrenete ovaj test, jedinični test prolazi - to možete vidjeti u programu Test Explorer Windows u vašem Visual Studio IDE-u. Istražimo sada kako možemo raditi s teorijama za izvršavanje jediničnih testova koji se temelje na podacima.

Sljedeći isječak koda ilustrira kako možete raditi s jedinstvenim testovima na temelju podataka pomoću xUnit.Net.

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

 public void CheckInputTest(string input, string substring)

 {

      Assert.Equal(true, input.Contains(substring));

 }

Pogledajte gore navedeni isječak koda. Obratite pažnju na upotrebu atributa [Theory]. Ako se jedinični testovi ne temelje na podacima, trebali biste se odlučiti za atribut [Fact] u metodama jedinstvenih testova. Obratite pažnju na to kako su parametri proslijeđeni u podatkovnoj jedinici koja se naziva podacima CheckInput. Atribut InlineData pruža podatke izvornog koda. U ovom primjeru podaci se prenose na metodu jediničnog ispitivanja putem ugrađenih vrijednosti. Možete imati i više atributa InlineData - samo ih trebate razdvojiti zarezom. Evo kako to možete postići.

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

            InlineData("This is another set of data for the data driven test", "data")]

        public void CheckInputTest(string input, string substring)

        {

            Assert.Equal(true, input.Contains(substring));

        }

Kada izvršite gornji test vođen podacima, metoda CheckInputTest izvršava se dva puta - jednom za svaki skup ulaznih podataka.