Ghidul începătorilor pentru testarea unitară cu Xcode

Construcția de software este un proces complex. Dincolo de stăpânirea diferitelor instrumente și limbaje de programare, există și înțelegerea diferitelor roluri de dezvoltare software. După cum majoritatea dintre noi știm, proiectele mari nu implică doar codare. Proiectele mari implică, de asemenea, alte resurse pentru colectarea cerințelor, prototiparea și testarea.

Procesul de validare a codului este adesea denumit asigurarea calității. Cu toate acestea, expresia este oarecum înșelătoare. În loc de a asigura calitatea codului, obiectivul real este de a o măsura – adesea pe măsură ce proiectul evoluează. Cunoscută și sub denumirea de dezvoltare bazată pe teste (de exemplu, TDD), această diferență subtilă poate fi observată atunci când se examinează rolurile funcției de calitate. Acestea includ următoarele:

De ce testele unitare?

După cum se arată, măsurarea calității este adesea grupată în activități automate și manuale. Ca o persoană interesată de algoritmi, codul suplimentar cunoscut sub numele de teste unitare funcționează pentru a testa proiectul software principal. Testele unitare sunt, de obicei, scrise de dezvoltatori și sunt în centrul atenției într-un mediu TDD. De exemplu, testele unitare sunt esențiale în dezvoltarea acestei cărți. Folosind iOS XCTest Framework, haideți să trecem în revistă modul în care funcționează testele unitare în Swift.

LUCRAREA CU XCTEST

Dacă v-ați familiarizat cu conceptele Swift analizate în carte, să învățați cum să scrieți teste unitare ar trebui să fie simplu. După cum s-a discutat, testele unitare funcționează pentru a exersa codul căruia îi lipsește o interfață cu utilizatorul final. Pentru a ilustra, să trecem în revistă cazurile de testare care exersează o structură de date Stack.

Deși cartea nu trece în revistă particularitățile mediului de dezvoltare integrat (IDE) Xcode, trebuie remarcat faptul că testele pot fi executate prin funcție, clasă sau țintă. Folosind Xcode, testele unitare sunt stabilite prin adăugarea unei noi ținte de testare la proiectul de cod principal. Odată configurate, testele unitare pot fi executate din IDE sau din linia de comandă.

Reguli privind testele

Chiar dacă nu este obligatoriu, se consideră că este cea mai bună practică dacă fișierul de testare unitară se potrivește îndeaproape cu convenția de denumire a fișierului (fișierelor) nostru (noastre) de implementare. În cazul nostru, vom folosi StackTest.swift. Pentru a avea acces la metodele și proprietățile principale Stack din proiectul nostru principal, fișierul va include, de asemenea, o declarație de import testabil:

Ca și alte cadre de testare unitară, XCTest funcționează prin integrarea caracteristicilor limbajului Swift cu funcții specifice legate de testare. Metodele esențiale sunt grupate împreună sub formă de aserțiuni. La crearea testelor, compilatorul va recunoaște testele unitare cu funcții prefixate cu cuvântul cheie test.

Dincolo de funcțiile Swift obișnuite, testele unitare sunt proiectate în mod intenționat ca unități autonome de logică. Ca urmare, metodele de testare nu acceptă argumente și nu returnează valori. În mod alternativ, datele de testare pot fi gestionate prin intermediul metodelor de ajutor și al secvențelor de inițializare / dezactivare. Luați în considerare următoarele:

Planificarea testelor

După cum s-a discutat, operațiunea principală a unei structuri de date Stack este adăugarea și eliminarea elementelor. În loc să scriem o singură funcție pentru a testa toate operațiile, planul nostru de testare izolează fiecare operație principală a Stack-ului cu propriul test. După cum se vede în cazul testului TestPushStack, afirmația XCTAssertTrue verifică inițializarea corectă a variabilei Stack.count. Următorul pas implică exersarea aplicației Stack.push prin iterația prin matricea de elemente numberList. Pentru a verifica dacă fiecare test utilizează aceleași date, numberList este populat folosind metoda de configurare a clasei XCTestCase.

Cu testul unitar pentru adăugarea de elemente Stack implementat, putem scrie următorul test pentru eliminarea elementelor:

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.