Unit tesztelés Visual Studio használatával NUnit és nsubstitute

Ui Már az írás folyamata látni, hogy ő marad a magyar fordítását a könyv.


mert Ez a könyv alapvetően írva C # programozók, éppen azért, mert követte a választás a könyvtárak NUnit, NSubstitute. ugyanazon változatlan maradt elnevezési rendszert.

Tehát lehet, hogy elindul. Megmondom, hogyan kell beállítani a Visual Studio, hogy írjon vizsgálatok, akárcsak a 3 példa. Az első - az ebben a cikkben egyszerű és kiagyalt, így a bázis. A második rész egy viszonylag egyszerű példa, emlékszem, hogy a vizsgálatokat fedezi az első alkalommal. A harmadik részben a cikk egy példa a bonyolultabb és hogy írjak párhuzamos kódot. Annak érdekében, hogy egyértelmű, hogy nem istenek éget edények.
Először telepíteni kell NUnit. de indul be van állítva VisualStudio - NuGet. Ez a kiterjesztés lehetővé teszi, hogy a csomagok telepítése egy parancsot a konzolban.
Nyílt Visual Studio. és válasszuk az Eszközök | A bővítmények és frissítések (korábban Extension Manager)


Azt is telepíthető a NUnit Teszt Adapter - integrációs tesztek futnak a stúdióban (bár tudom használni ReSharper úgyhogy nem különösebben akar.)
Bár én nem ajánlom telepítését Unit Test Generator. Olvastam a kérdést a véleményét, de nem figyel. A telepítés után - megszűnik működni átmenet végrehajtásában osztály / módszer Ctrl + kattintás. A probléma rögtön eltűnt eltávolítása után a dugót.
Tehát most van NuGet. de szükségünk NUnit (fogom használni ezt a keretet, a beépített Visual Studio) együtt NSubstitute.
Készítünk egy teszt konzol projekthez, és nevezze meg SampleProject. Én meg a védjegy ellen létrehozása címtár megoldás. a mappát a teszteket a projekt nem fektettek be a projekt maga volt, és ugyanazon a szinten.

Most hozzon létre egy projektet, amely egység vizsgálatok a projekt

Előírja a projekt neve

Figyeljük meg, hogy a Hely fölmentem egy magasabb szintre, amelyet eredetileg ajánlott nekem, hogy hozzon létre egy projektet unit tesztek belsejében egy mappát a projekt.
Mint korábban írtam, név konvenció kerül sor a könyv The Art Of Unit tesztelés. Íme projekt tesztek a következő - <Тестируемый проект>.UnitTests. Így már a projekt a vizsgálatok fogják hívni SampleProject.UnitTests
Miután létrehozta SampleProject.UnitTests projekt - megnyit egy fájlt létrehozni UntTest1.cs

Amint látjuk most egy beépített VisualStudio vizsgálat keretében. Ez is érthető attribútumok - az osztály [Test]. a módszer [TestMetod]. Azt szeretnénk használni NUnit amely ahelyett, hogy ezeket más jellemzők [TestFixture] és a [Test] ill. Próbáljunk változtatni, de ezek pirossal aláhúzva, mert amíg VisualStudio róluk semmit nem tud.

Nyisd meg a konzolt NuGet

És átveheti parancs
Telepítse-csomag NUnit
majd
Telepítse-csomag NSubstitute
FONTOS: Ne felejtse el kiválasztani az alapértelmezett projekt, mint a projekt unit tesztek, és nem a program. Ellenkező esetben a könyvtár lesz állítva a rossz projektet.

Hozzá UnitTest1 -
használatával NUnit.Framework;
és látjuk, hogy a fordító most már tudja, mi attribútumok segítségével a régi lehet távolítani (a Microsoft.VisualStudio.TestTools.UnitTesting)
Remélem, hogy elolvassa a könyvet The Art Of Unit tesztelés, vagy egyszerűen fogalmam sincs, hogyan kell dolgozni nagyjából megfelelnek NUnit. mert Mélyen alapján nem tervezi, hogy megmagyarázni egy kicsit a cikket formátumban.
Ha valóban rövid - a legfontosabb dolog egy egység teszt - ez a kijelentés az igazság a feltételezés (Assert).
Megteremti a fő projekt mappa SampleProject Utilites és hozzon létre ott IAccount interfész (mappa jön létre a vizuális elválasztása osztályok és nem szükséges)
Kezdetben hívtam GetAccountId_InititalizedObject_ReturnCorrectId módszer. majd átnevezték
GetAccountId_WasInitializedWithId_ReturnSameId
Kezdjük létrehozásával kód fiók
Figyelembe véve = új fiók ();
és látni azt a hibát, a projekt unit tesztek még nem tudni a teszt projekt
Nos, meg kell adni a hivatkozás az eredeti SampleProject. hívás beszélgetés

És úgy döntünk, a projekt

Ezután adjuk hozzá a class AccountTests segítségével SampleProject.Utilites; és elkezdi lefordítani a kódot
hozzáfűzi a kódot, kéne valami ilyesmit
Futunk a teszt (futok segítségével runner'a ReSharper. De van egy ingyenes megoldás, ugyanaz NUnit Test adapter., Amely így hangzik :)

Úgy látjuk, hogy ez átmegy

Mi az a teszt? Elkészítjük objektum fiók. inicializálása az id. majd Assert.AreEqual parancsot (account.GetAccountId (), initId); Megnézzük, hogy GetAccountId () metódus visszaadja ugyanazt az értéket, amely volt elindulni.
Ha szeretné látni, hogy a teszt nem sikerül, változtatni a ellenőrzéséhez
Assert.AreEqual (account.GetAccountId (), 0);
bármelyik
Assert.AreNotEqual (account.GetAccountId (), initId);
Általában a munka, bár túl egyszerű és erőltetett. Felteszek egy kis türelem.
Nézzük foglalkozik, hogy mi a NSubstitute
A legnehezebb talán az egység tesztelése „e -, hogy együttműködjön a tárgyakat, amelyeket nem vizsgáltak. Képzeljük el, hogy a GetAccountId () metódus, hogy ténylegesen végre több száz sornyi kódot, megadta a hálózaton, hogy az adatbázis eléréséhez, és ilyesmi. Nem a legvidámabb kilátásba vontatási egészet UnitTest'ah. hogy könnyű és gyors, így hogy ideális esetben legalább évente összeállítása futásuk és győződjön meg róla, hogy a kód nem törött, módosítva. A hivatkozás egy hálózati fájlrendszer -
a) igényelnek konfiguráció
b) lehet elfoglalni egy jelentős időt
c) lényegében integrációs tesztek, amelyek szintén fontos, de most nem róluk szól.
Mi a megoldás - természetesen hazugság, és cserélje ki mindazt, ami túl ellenőrzés) létrehozása Fake. Dumb. Csonka objektumok. Tárgyak az interfészt megvalósító, de valójában, amit mondanak nekik.