Ei bine, evident, nu's nici un răspuns corect la această întrebare, dar aici's ceea ce am'm alegerea de a merge cu în prezent:
Pentru unitate de testare, am folosit pentru a utiliza OCUnit/SenTestingKit în XCode 4. L's simplu & solid. Dar, eu prefer limba de BDD peste TDD (Ce este RSpec mai bine decât Testul::Unitate?) deoarece cuvintele noastre de a crea lumea noastră. Deci, acum, am folosi Kiwi cu ARC & Kiwi finalizarea cod/autocompletare. Prefer Kiwi peste Cedru, deoarece's construit pe partea de sus a OCUnit și vine cu RSpec stil un fitil & își bate joc/cioturi. UPDATE: am'm acum în căutarea în OCMock pentru că, în prezent, Kiwi nu't suport miscand gratuit punte obiecte.
Pentru testarea de acceptare, am utilizat UI Automation, deoarece's minunat. Acesta vă permite să înregistrați fiecare caz de testare, ceea ce face scrierea de teste automate. De asemenea, Apple se dezvoltă, și deci are un viitor promițător. De asemenea, funcționează pe dispozitiv și de Instrumente, care permite pentru alte caracteristici interesante, cum ar fi arată pierderi de memorie. Din păcate, cu UI Automation, nu't știu cum de a rula Objective-C cod, dar cu Frank & iCuke poți. Deci, am'll un test de nivel inferior Obiectiv-C, cu unitate de teste, sau pentru a crea UIButton doar pentru [
TEST` construi configurare]55, care atunci cand este apasat, va rula Objective-C cod.
Ce solutii folositi?
Decide între două framework-uri de testare cum ar fi de Cedru și OCUnit (de exemplu) se reduce la două lucruri: stilul preferat, și ușurința de utilizare. Am'll începe cu stil, pentru ca's pur și simplu o chestiune de opinie și de preferință; ușurința de utilizare tinde să fie un set de compromisuri. Stil considerente transcend ce tehnologie sau limba utilizată. xUnit-stil de unitate de testare a fost în jur de mult mai mult decât BDD-stil de testare, dar acesta din urmă a câștigat rapid în popularitate, în mare parte datorită Rspec. Principalul avantaj al xUnit stil de testare este simplitatea sa, și a fost adoptat pe scară largă (printre dezvoltatorii care scrie teste unitare); aproape orice limbă ai putea lua în considerare scrierea de cod în a o xUnit stil cadru disponibil. BDD-stil cadrele tind să aibă două diferențe majore în comparație cu xUnit-stil: cum te structura testului (sau specificatii), și sintaxa pentru a-ți scrie afirmații. Pentru mine, structurale diferență este principalul diferențiator. xUnit teste sunt unidimensional, cu o singură metodă de configurare pentru toate testele într-o anumită clasa de test. Clasele care am testat, cu toate acestea, nu't unul-dimensional; de multe ori avem nevoie pentru a testa acțiuni în mai multe diferite, potențial conflictuale, contexte. De exemplu, ia în considerare un simplu ShoppingCart clasa, cu o addItem: metoda (pentru scopuri de acest răspuns I'll folosi Obiectiv C sintaxă). Comportamentul de această metodă pot diferi atunci când coșul este gol, comparativ cu atunci când coșul conține alte elemente; aceasta poate diferi dacă utilizatorul a introdus un cod de reducere; aceasta poate diferi dacă elementul specificat poate't fi expediate prin selectat metoda de transport maritim; etc. Deoarece aceste condiții se intersectează unul cu altul va termina cu un geometric număr tot mai mare de contexte posibile; în xUnit stil de testare acest lucru duce adesea la o mulțime de metode cu nume ca testAddItemWhenCartIsEmptyAndNoDiscountcodeandshippingmethodapplies. Structura de BDD-stil cadrele vă permite să organizați aceste condiții individual, care-I face mai ușor de a face sigur că acoperă toate cazurile, precum și mai ușor de a găsi, a modifica sau a adăuga condiții individuale. Ca un exemplu, folosind Cedru sintaxa, metoda de mai sus va arăta astfel:
describe(@"ShoppingCart", ^{
describe(@"addItem:", ^{
describe(@"when the cart is empty", ^{
describe(@"with no discount code", ^{
describe(@"when the shipping method applies to the item", ^{
it(@"should add the item to the cart", ^{
...
});
it(@"should add the full price of the item to the overall price", ^{
...
});
});
describe(@"when the shipping method does not apply to the item", ^{
...
});
});
describe(@"with a discount code", ^{
...
});
});
describe(@"when the cart contains other items, ^{
...
});
});
});
În unele cazuri,'ll găsi contexte în care conțin aceleași seturi de afirmații, pe care le puteți USCA folosind comună exemplu contexte. Cea de-a doua principala diferență între BDD-stil cadre și xUnit stil cadre, afirmarea (sau "meciuri") sintaxa, face pur și simplu stilul de specificatii ceva mai frumos; unii oameni chiar le place, altora nu't. Asta duce la întrebarea de ușurința de utilizare. În acest caz, fiecare cadru are argumentele sale pro și contra:
Am'm de gând să aibă de a arunca Frank în testele de acceptare se amestecă. Aceasta este o destul de nou plus dar a lucrat excelent pentru mine până acum. De asemenea, acesta este, de fapt, a fi lucrat în mod activ, spre deosebire de icuke și altele.
Lista Mare!
Am găsit o altă soluție interesantă pentru UI testare aplicații iOS.
Ea se bazează pe UIAutomation`. Cadrul permite să scrie ecran centrice scenarii în Castravete ca stil. Scenariile pot fi executate în Simulator și pe dispozitivul de la o consola (este CI prietenos).
Afirmațiile sunt screenshot bazează. Sunete inflexibil, dar devine frumos raport HTML, evidențiate cu ecran comparație și vă poate oferi măști care definesc regiunile doriți să aveți pixel exactă afirmația.
Fiecare ecran trebuie să fie descrise în CoffeScript și instrumentul de sine este scris în ruby. Este un fel de polyglott coșmar, dar instrumentul oferă o abstracție frumos pentru UIAutomation
și când ecranele sunt descrise este ușor de gestionat, chiar și pentru QA persoană.
Eu as alege iCuke pentru teste de acceptare și de Cedru pentru teste unitare. UIAutomation este un pas în direcția cea bună pentru Apple, dar instrumentele nevoie de un suport mai bun pentru integrare continuă; rulează automat UIAutomation teste cu Instrumente nu este în prezent posibilă, de exemplu.
GHUnit este bun pentru teste unitare; pentru testele de integrare, am'am folosit UISpec cu un oarecare succes (github furculita aici: https://github.com/drync/UISpec), dar aștept cu nerăbdare să încerc iCuke, deoarece ea promite a fi un ușor de configurare, și puteți utiliza șine de testare bunătate, ca RSpec și Castravete.
Mie îmi plac OCDSpec2 dar am'm părtinitoare, am scris OCDSpec și să contribuie la cel de-al doilea.
L's foarte repede chiar și pe iOS, în parte pentru că-l's a construit de la sol în sus, mai degrabă decât să fie pus pe partea de sus a OCUnit. Acesta are o RSpec/Jasmine sintaxa fel de bine.