Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute
Teste de drum iOS dezvoltare - citiți înainte de toate, și, din păcate, nu au avut timp să pună în practică, pentru că a trebuit imediat să se ocupe mai întâi cu dezvoltarea site-ului, și apoi C # proiect, atât de mult a avut timp să erodeze de cap. Când mă întorc la dezvoltarea iOS va trebui să re-citit, sau cel puțin sări în jurul valorii. De fapt, proiectul meu iOS mare, care a început ca un prototip și în cele din urmă a crescut într-un plin aproape gata pentru proiectul AppStore și ma încurajat să stea în spatele studiului de unitate de testare lui. După proiectarea lame în toate cele patru membre (și, de fapt, oamenii inteligenți au scris nu este în zadar - a făcut prototip testat, - arunca prototipul și scrie de la zero), cu privire la posibilitatea de testare, eu nu spun nimic. Dar nu cred că a fost scris oricum. Eu încerc să scriu în mod normal, dar între o idee bună de a face un cod de test și scrie testul este doar abis infinit. Și în carte - Vă recomandăm, este destul de consistent, cu multe exemple. Desigur, am recomanda în principal iOS dezvoltatori, deoarece Material multe se referă în mod specific la Objective-C și formularea de cacao. Fără un set de executare de cod și pentru a fixa materialul de la mijlocul cărții, am început să se scufunde. Dar, cu toate acestea acest lucru arată doar adâncimea materialului depus.
P.S. Deja în procesul de scriere pentru a vedea că el este lăsat pe traducerea în limba română a acestei cărți.
Unitatea de testare în Visual Studio folosind NUnit și nsubstitute
Test de Driven Development pentru iOS. și are atât o versiune electronică și o hârtie. Eu însumi nu am citit-o, astfel încât calitatea traducerii nu poate estima

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute
Arta de unitate de testare - o carte bună pentru a înțelege elementele de bază ale subiectului. Dar, în opinia mea, este lipsită de exemple practice. Cu toate acestea foarte recomanda să înceapă cu ea. Apoi, să ia o clasă simplă, care dependențe externe speciale, și să încerce să acopere testele. În mod ideal, încercați să imediat TDD (Test Drive Development). Am făcut acest lucru, pentru prima clasa necesară pentru mine, am scris mai întâi testele, și numai apoi scris codul. Ceea ce mi-a lovit - datorită testelor - chiar și înainte de integrarea noii clase în sistem real, - aproape toate neajunsurile au fost capturate. La proiectarea o astfel de clasa a doua într-o perioadă limitată de timp (ca întotdeauna), arrogantly am decis că testele nu mai pot scrie. Ca rezultat, am primit câteva bug-uri nu foarte placute, a petrecut mai mult timp decât în ​​cazul în care testele de scriere imediat. Și apoi m-am decis să iau în serios teste.

pentru că Această carte este scrisă în mod esențial pentru C # programatori, tocmai pentru că a fost urmată de o alegere de biblioteci NUnit, NSubstitute. la fel a fost lăsat neschimbat sistemul de numire.

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute
munca efectivă cu cod moștenire - o carte mai gravă în ceea ce privește volumul și alimentarea de material mai greu de-al doilea. Și plus și minus că, în diferența dintre exemplele anterioare discutate aici pentru mai multe limbi: Java, C ++, C. Eu vă sfătuiesc să citiți amintirile.

Deci, poate că va începe. O să-ți spun cum să configurați Visual Studio pentru a scrie teste, așa cum sunt 3 exemple. Primul - în acest articol este simplu și născocită pentru a da baza. În a doua parte ar fi un exemplu relativ simplu, amintiți-vă modul în care testele prevăzute pentru prima dată. În a treia parte a articolului este un exemplu de mai complicată și mi-a va scrie cod paralel. Pentru a face clar faptul că nu zeii arde ghivece.

În primul rând trebuie să instalați NUnit. dar, pentru a începe este setat în VisualStudio - NuGet. Această extensie vă permite să instalați pachete într-o singură comandă de la consolă.
Deschideți Visual Studio. și selectați Instrumente | Extensiile și actualizări (a fost anterior Extension Manager)

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Puteți instala, de asemenea, adaptorul de testare NUnit - teste de integrare a alerga la studio (deși eu folosesc Resharper așa că nu vreau în mod special.)
În timp ce eu nu recomand instalarea Unitate de testare Generator. Am citit despre problema într-un comentariu, dar nu acorde atenție. După instalare - încetează să lucreze de tranziție în implementarea clasei / metoda pentru Ctrl + clic. Problema a dispărut imediat după îndepărtarea unui dop.

Deci, acum avem NuGet. dar avem nevoie de NUnit (voi folosi acest cadru în loc de built-in Visual Studio), împreună cu NSubstitute.

Vom crea un proiect consolă de testare și denumiți-o SampleProject. Am stabilit marca împotriva directorul Creare pentru soluție. în dosarul cu testele pentru proiect nu a fost investit în proiect în sine, și a fost la același nivel.

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Acum, creați un proiect care conține teste unitare pentru proiectul nostru

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Prevede numele proiectului

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Observați că în Locație am urcat la un nivel superior, care a fost recomandat inițial pentru mine pentru a crea o unitate de teste de proiect intr-un folder cu proiectul.

Așa cum am scris mai sus, convenția nume va fi luat din cartea Arta de unitate de testare. Pentru a numi teste de proiect este următoarea - <Тестируемый проект>.UnitTests. Astfel, am un proiect cu testele vor fi numite SampleProject.UnitTests

După crearea proiectului SampleProject.UnitTests - deschide un fișier creat UntTest1.cs

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

După cum vom vedea acum folosește un cadru de testare VisualStudio construit. Acest lucru poate fi înțeles prin atribute - clasa [Test]. în metoda [TestMetod]. Dorim să folosim NUnit care în loc de alte atribute [TestFixture] și [Test] respectiv. Să încercăm să se schimbe, dar ele sunt subliniate în roșu, pentru că până la VisualStudio despre ei nu știe nimic.

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Deschideți consola NuGet

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Și să câștige comanda
Instalați-Pachet NUnit
și apoi
Instalați-Pachet NSubstitute

IMPORTANT: Nu uitați să alegeți proiectul implicit ca proiectul cu teste unitare și nu cu programul. În caz contrar, biblioteca va fi setat la proiect greșit.

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Adăugați la UnitTest1 -
folosind NUnit.Framework;

și vom vedea că compilatorul înțelege acum atributele noastre, folosind vechi pot fi eliminate (folosind Microsoft.VisualStudio.TestTools.UnitTesting)

Sper ca ai citit cartea Arta de unitate de testare, sau pur și simplu nu au nici o idee cum să lucreze în linii mari cu NUnit. deoarece profund bază nu intenționează să explice un pic formatul de articol.

Dacă suntem foarte scurt - principalul lucru într-un test de unitate - este o declarație cu privire la adevărul ipoteza (Assert).
Va crea în principal dosarul proiectului SampleProject Utilites și de a crea acolo interfață IAccount (director este creat pentru separarea vizuală a claselor și nu este necesar)

Initial am numit metoda GetAccountId_InititalizedObject_ReturnCorrectId. apoi redenumit
GetAccountId_WasInitializedWithId_ReturnSameId

Începem crearea contului de cod
cont Cont nou Cont = ();
și a vedea greșeala, testele noastre unitate de proiect nu știu încă despre proiectul de testare
bine, este necesar să se adauge o trimitere la SampleProject originală. Conversație apel

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Și ne-am alege proiectul nostru

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

După aceea, se adaugă AccountTests de clasă folosind SampleProject.Utilites; și începe să compileze codul

atasaza codul, ar trebui să obțineți ceva de genul asta

Am rula testul (am rulat cu ajutorul runner'a Resharper. Dar există o soluție gratuită, același adaptor NUnit test. Care rulează ca acest lucru :)

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

și vom vedea că trece

Unitatea de testare în Visual Studio folosind NUnit și nsubstitute

Ce este testul? Creăm cont de obiect. inițializarea ID-ul său. și apoi comanda Assert.AreEqual (account.GetAccountId (), initId); Verificăm că GetAccountId () metoda returnează aceeași valoare care a fost la inițializare.

Dacă doriți să vedeți cum nu trece testul, schimba linia pentru a verifica

Assert.AreEqual (account.GetAccountId (), 0);
oricare
Assert.AreNotEqual (account.GetAccountId (), initId);

În activitatea generală, deși prea simplu și mult exagerată. Eu întreb un pic de răbdare.
Să ne ocupăm de asta, ce pe NSubstitute
Cea mai grea parte este, probabil, în unitatea de testare „e - este de a lucra cu obiecte care nu sunt testate. Imaginați-vă că în metoda GetAccountId () pentru a efectua de fapt, sute de linii de cod, a făcut apel la rețea pentru a accesa baza de date, și alte chestii de genul asta. Nu este perspectiva cea mai veselă dintre lugging totul în UnitTest'ah. să fie ușor și rapid, astfel încât, în mod ideal, cel puțin la fiecare compilare a rula lor și asigurați-vă că acest cod nu este rupt, astfel cum a fost modificată. O referire la un sistem de fișiere de rețea -
a) necesită configurație
b) poate ocupa un timp considerabil
c) sunt, în esență teste de integrare, care sunt de asemenea importante, dar acum nu este vorba despre ele.

Care este soluția - desigur, minciună și să înlocuiască tot ceea ce se află dincolo de controlul nostru) Creați un fals. Prost. obiecte stub. Obiectele care implementeaza interfata, dar, de fapt, ceea ce li se spune.