Programmering

Hvordan jobbe med xUnit.Net framework

Jeg har brukt xUnit i ganske lang tid nå, og det er min enhetstestingsramme som jeg velger. Det er et testverktøy for åpen kildekode for .Net framework som er kompatibelt med ReSharper, CodeRush, TestDriven.Net og Xamarin. Du kan dra nytte av xUnit.Net for å hevde en unntakstype enkelt. Du kan også utvide fakta- eller teoriattributter i xUnit.Net, og det gir utmerket støtte for å skrive parametrerte enhetstester. Her er Github repository link for xUnit.Net.

Slik fungerer du med xUnit.net i Visual Studio. For denne demonstrasjonen vil vi bruke Visual Studio 2015, selv om du også kan jobbe med andre kompatible versjoner av Visual Studio. Følg nå disse enkle trinnene for å konfigurere miljøet ditt for å jobbe med xUnit.Net i Visual Studio.

  1. Åpne UDE for Visual Studio 2015
  2. Lag et nytt prosjekt av typen "Klassebibliotek"
  3. Lagre prosjektet med et navn
  4. Deretter installerer du xUnit.Net via NuGet Package Manager

Og det er det! For å kjøre enhetstestene i Visual Studio IDE, kan du bruke xUnit.net runner for Visual Studio. Her er hva du trenger å spesifisere for å installere xUnit.net [Runner: Visual Studio] -pakken ved hjelp av Package Manager Console Window:

Installasjonspakke xunit.runner.visualstudio -Version 2.1.0

Dette er alt du trenger for å sette opp miljøet ditt slik at du kan utføre xUnit.Net-enhetstestene fra Visual Studio IDE.

Fakta og teorier

I motsetning til det populære [Test] -attributtet du kanskje er kjent med, må du bruke [Fakta] -attributtet til å skrive enhetstestmetodene dine ved hjelp av xUnit.net. Merk at xUnit.net støtter to typer enhetstester: fakta og teorier.

Mens fakta brukes til å teste uforanderlige forhold, er teorier tester som er sanne for et bestemt sett med data som sendes som argument for metoden. Du vil vanligvis bruke [Fakta] -attributtet til å skrive enhetstester uten metodeargumenter.

Attributtet [Teori] trenger imidlertid en eller flere forekomster av DataAttribute for å bli sendt som metodeargumenter. I hovedsak vil du bruke [Teori] -attributtet til å skrive datadrevne enhetstester. Datadrevne enhetstester er de som kjøres på forskjellige datasett.

Forutsatt at xUnit.Net og runner for Visual Studio er installert, la oss først skrive en enkel enhetstest ved hjelp av [Fakta] -attributtet. Vurder følgende enhetstestmetode - vi vil dra nytte av [Fakta] -attributtet her.

[Faktum]

offentlig ugyldig CheckEqualityTest ()

  {

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

  }

Summetoden godtar to heltall og returnerer summen av dem.

privat int Sum (int x, int y)

  {

returnere x + y;

  }

Når du kjører denne testen, går enhetstesten - du kan se det i Test Explorer Windows i Visual Studio IDE. La oss nå undersøke hvordan vi kan jobbe med teorier for å utføre enhetstester som er datadrevne.

Følgende kodebit illustrerer hvordan du kan jobbe med datadrevne enhetstester ved hjelp av xUnit.Net.

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

offentlig ugyldig CheckInputTest (strenginngang, strengstrenging)

 {

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

 }

Se kodebiten gitt ovenfor. Legg merke til bruken av [Teori] -attributtet. Med mindre enhetstestene dine er datadrevne, bør du velge [Fakta] -attributtet i enhetstestmetodene dine. Legg merke til hvordan parametere har blitt overført i den datadrevne enhetstestmetoden som heter CheckInput. InlineData-attributtet gir kildekodedataene. I dette eksemplet overføres dataene til enhetstestmetoden gjennom innebygde verdier. Du kan også ha flere InlineData-attributter - du trenger bare å skille dem med komma. Slik kan du oppnå dette.

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

InlineData ("Dette er et annet datasett for den datadrevne testen", "data")]

offentlig ugyldig CheckInputTest (strenginngang, strengstrenging)

        {

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

        }

Når du utfører den ovennevnte datadrevne testen, vil CheckInputTest-metoden utføres to ganger - en gang for hvert sett med inndata.

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