Programmering

Sådan arbejder du med xUnit.Net framework

Jeg har brugt xUnit i nogen tid nu, og det er min enhedstestningsramme, jeg vælger. Det er et open source-testværktøj til .Net framework, der er kompatibelt med ReSharper, CodeRush, TestDriven.Net og Xamarin. Du kan drage fordel af xUnit.Net til let at hævde en undtagelsestype. Du kan også udvide fakta- eller teoriattributter i xUnit.Net, og det giver fremragende support til at skrive parametriserede enhedstests. Her er linket til Github-lager til xUnit.Net.

Sådan arbejder du med xUnit.net i Visual Studio. Til denne demonstration bruger vi Visual Studio 2015, selvom du også kan arbejde med andre kompatible versioner af Visual Studio. Følg nu disse enkle trin for at konfigurere dit miljø til at arbejde med xUnit.Net i Visual Studio.

  1. Åbn Visual Studio 2015 UDE
  2. Opret et nyt projekt af typen "Klassebibliotek"
  3. Gem projektet med et navn
  4. Installer derefter xUnit.Net via NuGet Package Manager

Og det er det! For at køre enhedstestene i Visual Studio IDE kan du bruge xUnit.net-runner til Visual Studio. Her er hvad du skal specificere for at installere xUnit.net [Runner: Visual Studio] -pakken ved hjælp af Package Manager-konsolvinduet:

Installationspakke xunit.runner.visualstudio-version 2.1.0

Dette er alt hvad du behøver for at få dit miljø indstillet, så du kan udføre xUnit.Net-enhedstestene fra Visual Studio IDE.

Fakta og teorier

I modsætning til den populære [Test] -attribut, som du måske er fortrolig med, skal du bruge [Fakta] -attributten til at skrive dine enhedstestmetoder ved hjælp af xUnit.net. Bemærk, at xUnit.net understøtter to typer enhedstests: fakta og teorier.

Mens fakta bruges til at teste uforanderlige forhold, er teorier tests, der gælder for et bestemt sæt data, der sendes som argument til metoden. Du bruger typisk [Fakta] -attributten til at skrive enhedstest, der ikke har nogen metodeargumenter.

Attributten [Teori] har dog brug for, at en eller flere forekomster af DataAttribute sendes som metodeargumenter. I det væsentlige vil du bruge attributten [Teori] til at skrive datadrevne enhedstests. Datadrevne enhedstest er dem, der udføres på forskellige datasæt.

Forudsat at xUnit.Net og dets runner til Visual Studio er installeret, lad os først skrive en simpel enhedstest ved hjælp af [Fact] -attributten. Overvej følgende enhedstestmetode - vi udnytter attributten [Fakta] her.

[Faktum]

offentlig ugyldighed CheckEqualityTest ()

  {

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

  }

Metoden Sum accepterer to heltal og returnerer summen af ​​dem.

privat int Sum (int x, int y)

  {

returnere x + y;

  }

Når du kører denne test, går enhedstesten igennem - du kan se det i Test Explorer Windows i din Visual Studio IDE. Lad os nu undersøge, hvordan vi kan arbejde med teorier til at udføre enhedstest, der er datadrevet.

Følgende kodestykke illustrerer, hvordan du kan arbejde med datadrevne enhedstest ved hjælp af xUnit.Net.

[Teori, InlineData ("Dette er en datadrevet test", "data")]

offentlig ugyldighed CheckInputTest (strenginput, strengstreng)

 {

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

 }

Se kodeuddraget ovenfor. Bemærk brugen af ​​attributten [Teori]. Medmindre dine enhedstest er datadrevne, skal du vælge attributten [Fakta] i dine enhedstestmetoder. Bemærk, hvordan parametre er overført i den datadrevne enhedstestmetode ved navn CheckInput. InlineData-attributten indeholder kildekodedataene. I dette eksempel overføres dataene til enhedstestmetoden gennem inline-værdier. Du kan også have flere InlineData-attributter - du skal bare adskille dem ved hjælp af et komma. Her er hvordan du kan opnå dette.

[Teori, InlineData ("Dette er en datadrevet test", "data"),

InlineData ("Dette er et andet datasæt til den datadrevne test", "data")]

offentlig ugyldighed CheckInputTest (strenginput, strengstreng)

        {

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

        }

Når du udfører ovenstående datadrevne test, udføres CheckInputTest-metoden to gange - en gang for hvert sæt inputdata.

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