MVC 5 egység tesztelése

Ebben a cikkben, azt használja a beépített egység tesztelése által kínált Visual Studio, bár más csomagok és a .NET egység tesztelése. A legnépszerűbb ezek közül talán NUnit. Azonban minden vizsgálati csomag alapvetően nem ugyanaz a dolog. Az ok kiválasztásának Visual Studio tesztelési eszközök társított vonzerejének integráció más részein az IDE-környezetet.

Ahhoz, hogy működjön együtt a beépített egység tesztelése Visual Studio mintaprojekt (amit fejlődésnek indult az előző cikkben), egy új végrehajtási IDiscountHelper felület került. Hozzon létre egy új mappát modell nevű MinimumDiscountHelper.cs tartalmával megadott az alábbi példát:

Célunk ebben a példában - teszi MinimumDiscountHelper osztály bizonyítani a következő szempontok a viselkedés:

ha a teljes összeg több mint $ 100, a kedvezmény 10% lesz;

ha a teljes összeg közötti tartományban $ 10 és $ 100-ig terjedő, a kedvezmény lesz $ 5;

A teljes összeg nem haladja meg a 10 $, a kedvezményt nem áll rendelkezésre;

Egy negatív teljes összeget fogják dobni ArgumentOutOfRangeException.

Class MinimumDiscountHelper még nem hajtja végre egyetlen egy ilyen szempontból a viselkedés. Követjük a megközelítést teszt-vezérelt fejlesztés (Test Driven Development - TDD). első írás egység vizsgálatok, és csak ezután végrehajtja a kódot.

Létrehozása egység teszt projekt

Az első lépés, hogy hozzon létre egy egység teszt projekt, amely a Solution Explorer ablakban a jobb gombbal a legfelső szintű elem (Solution (Megoldás)), és válassza a Hozzáadás a helyi menü -> New Project (Új -> New Project).

Szükség van egy vizsgálati projekt is megadhatja, amikor létrehoz egy új MVC projekt: egy párbeszédablak, ahol kiválaszthatja az eredeti tartalmat az MVC projekt. Erre a célra egy csekket hozzáadása Unit tesztek (Add unit tesztek).

Nyitott Új projekt párbeszédpanel (Egy új projekt). A Visual C # sablonokat a bal oldali panelen válassza ki a Test elem (Testing), és győződjön meg arról, hogy a középső panelen kiválasztott Unit Test Project (egység teszt projekt), az alábbiak szerint:

MVC 5 egység tesztelése

EssentialTools.Tests adja meg a projekt nevét, majd kattintson az OK gombra, hogy új projekt, amelyet hozzá kell adni a jelenlegi Visual Studio megoldás, valamint az MVC alkalmazási projekt.

Project vizsgálat kell egy linket egy alkalmazás projekt elérni osztályok elvégzésére velük kapcsolatban vizsgálatokat. A Solution Explorer a jobb gombbal az elemre EssentialTools.Tests hivatkozásokat a projekt és válassza ki az Add Reference a helyi menüből (add link). Kattintson Solution elem (határozat) a bal oldalon, és válassza ki a jelölőnégyzetet EssentialTools:

MVC 5 egység tesztelése

Create Unit tesztek

Kezdeni szerkesztés szemlélteti az alábbi példa:

Van adunk egyetlen egység teszt. Egy osztály, amely vizsgálatok jegyzetekkel attribútum TestClass. és az egyedi tesztek módszerek annotált attribútum TestMethod. Nem minden módszer a vizsgálati osztály kell unit tesztek. Annak igazolására, a fenti, általunk azonosított getTestObject () módszer, amely alkalmazható a vizsgálatokhoz. Mivel ez a módszer nem TestMethod attribútum, a Visual Studio környezetben nem kezelik, mint egy egység teszt.

Megjegyzés hozzáadása a nyilatkozatot, hogy a behozatali hely EssentialTools.Models neveket a vizsgálati osztály. Teszt osztályok - ez csak egy sima C # osztályok, amelyek teljesen tisztában a MVC projekt. Az egész „mágikus” a vizsgált projekt, és attribútumok TestClass TestMethod.

Mint látható, ha létrehoz egy egység teszt ezt a módszert követtük a minta „szervezet / akció / nyilatkozatot” (intézkedik / ACT / érvényesíteni - A / A / A). amelyet leírt a cikkben „Automatizált tesztelés”.

Sok elnevezési unit tesztek, de ragaszkodunk az elvet célja az ilyen nevek, amelyek egyértelműen azt tükrözik, hogy a teszt van jelölve. A módszer az egység teszt úgynevezett Discount_Above_100 () (kedvezmény a fenti összeg 100 $), és úgy néz ki, egyértelműen nekünk. A valóságban azonban, fontos csak az, hogy az Ön (és a csapat) megérteni az elfogadott elnevezési mintát, így lehet választani egy másik megközelítés, ha ez a valami nem teljesül.

Az elején a vizsgálati módszer hívjuk getTestObject () metódus, amely létrehoz egy példányát egy tárgy kísérletekre szánt - ebben az esetben MinimumDiscountHelper. Ezen kívül, mi határozza meg a teljes értéket, mely vizsgálati kerül sor. Ez a szakasz a szervezeti egység tesztet.

A vizsgálati szakaszban, hívjuk az akció MinimumDiscountHelper.ApplyDiscount () metódus, és hozzá az eredményt vissza kell adni nekik discountedTotal. Végül szakasz Assert.AreEqual () metódus, akkor használja a teszt hitelesítő nyilatkozatot, hogy a származtatott érték módszerrel ApplyDiscount (), 90% -a az említett összeg az elején.

A Assert osztály definiál egy sor statikus módszerek, amelyek felhasználhatók a vizsgálatok. Ez az osztály a Microsoft.VisualStudio.TestTools.UnitTesting névtér együtt számos további osztályok, amelyek hasznosak konfigurálására és teszteket.

Assert osztály egyik leggyakrabban használt, ezért fontos módszereket foglalja össze az alábbi táblázat:

Statikus módszerek Assert osztály

Azt állítja, hogy az objektum nem a megadott típusú

Minden statikus módszer a Assert osztály lehetővé teszi, hogy ellenőrizze bizonyos szempontból egy egységet teszt, és ha az ellenőrzés nem felel meg, ezek a módszerek dobni egy kivételt. Hogy egység teszt telt el, minden nyilatkozatot kell sikeresen befejeződött.

Mindegyik módszer az asztal túlterhelt változata, ami veszi a paraméter karakterláncot. Abban az esetben negatív állításokkal ebben a sorban van elhelyezve az üzenet elem a kivétel objektum. Módszerek és AreEqual AreNotEqual több túlterhelt változatainak szánt összehasonlítása konkrét típusokat. Például van egy változata, amely lehetővé teszi, hogy összehasonlítsuk a vonal érzéketlen.

Figyelemre méltó tagja a tér Microsoft.VisualStudio.TestTools.UnitTesting név ExpectedException attribútumot. Ez a nyilatkozat, amely pozitív eredményt ad, ha egy egység teszt kivételt dob ​​a megadott típusú ExceptionType paramétert. Ez az attribútum egy megbízható módja annak, hogy a generációs kivételek nélkül egy próbát blokkokat. fogni a készülék teszt kódot.

Most, hogy bebizonyosodott, hogyan lehet létrehozni egy egység teszt, hogy teszteljék a projekt, akkor add tovább vizsgálatok arra irányulnak, hogy más szempontok szerinti ellenőrzésére viselkedés MinimumDiscountHelper osztályban. Minden közreműködő mutatja az alábbi példa mutatja, de a unit tesztek olyan rövid és egyszerű (általában ez jellemző a unit tesztek), hogy részletes magyarázatot őket, nem lesznek hajtja:

Passage (nem halad) unit tesztek

Visual Studio IDE olyan teszt Explorer ablak (teszt karmester). szánt menedzsment és vizsgálatok végrehajtása. Válassza a Windows -> Test Explorer a teszt menü környezet Visual Studio, hogy nyissa ki az ablakot, majd a Futtatás All (Kezdés minden) a bal felső sarokban. Meglátod hasonló eredményeket mutatja az alábbi ábra:

MVC 5 egység tesztelése

A funkcionalitás

Most, hogy tudod, hogy a végén írjuk a kódot ellenőrizheti munkáját, el tudjuk kezdeni, hogy végre a szükséges funkciókat. Az összes készült készítmények MinimumDiscountHelper osztály megvalósítása meglehetősen egyszerű, és mutatja az alábbi példa mutatja:

Tesztelés és hibajavító kód

MVC 5 egység tesztelése

Visual Studio igyekszik mindig magukkal viszik a leghasznosabb információkat a felső része a Test Explorer ablakot. Ebben a helyzetben, az azt jelenti, hogy a vizsgálatokat, hogy nem jelenik meg, mielőtt a tesztel.

Az ábra azt mutatja, hogy a három egység vizsgálatok telt el, de van egy probléma által észlelt vizsgálati módszer Discount_Between_10_And_100. Ha rákattint ez a teszt akkor megtudja, mi a vizsgálat várhatóan megkapja az eredményt 5, míg a 10-es értékű kaptuk a valóságban.

Ezen a ponton, megyünk vissza a kódot, és hogy mi a várható viselkedését nem megfelelő végrehajtása - különösen a kedvezmény a teljes összeg 10 vagy 100, feldolgozása helytelenül. A probléma abban rejlik, hogy a következő nyilatkozatot az osztályból MinimumDiscountHelper:

Specifikáció, amivel foglalkozunk, beállítja a viselkedés értékeit között $ 10 és $ 100-ig terjedő, de a végrehajtás megszünteti ezeket az értékeket, és ellenőrzi, csak az érték, amely nagyobb, mint 10 $, hogy nem veszi figyelembe a teljes összeg pontosan megegyezik 10 $. A megoldás igen egyszerű, és mutatja az alábbi példa mutatja - a változás hatására az üzemeltető, ha az eredmény kell hozzá csak egy szimbólum:

Ha rákattint Run All in the Test Explorer ablakot, az eredmények azt mutatják, hogy a probléma megoldódott, és az összes tesztek sikeresek a kódot:

MVC 5 egység tesztelése

Kapcsolódó cikkek