Qual è il modo migliore per testare il codice Objective-C?


330

Quali framework esistono per testare il codice Objective-C? Vorrei un framework che si integri perfettamente con Apple Xcode.


Per quanto ne so, alcune risposte qui sono obsolete. Apple ora ha XCTest, che ti aiuta a risolvere questo problema. Penso che la maggior parte delle risposte debba essere aggiornata.
Miele,

Risposte:


317

Xcode include XCTest, che è simile a OCUnit , un framework di testing di unità Objective-C, e ha il pieno supporto per l'esecuzione di unit test basati su XCTest come parte del processo di costruzione del progetto. Il supporto per i test delle unità di Xcode è descritto nella Panoramica di Xcode: Uso dei test delle unità .

Negli Xcode 2 giorni, ho scritto una serie di post sul weblog su come eseguire alcune attività comuni con i test dell'unità Xcode:

Nonostante si utilizzi OCUnit anziché XCTest, i concetti sono sostanzialmente gli stessi.

Infine, ho anche scritto alcuni post su come scrivere test per le interfacce utente di Cocoa; il modo in cui è strutturato Cocoa lo rende relativamente semplice, perché nella maggior parte dei casi non è necessario girare un loop di eventi o qualcosa del genere.

Ciò rende possibile lo sviluppo basato su test non solo per il codice a livello di modello, ma anche per il codice a livello di controller e persino a livello di visualizzazione.


5
Peter Hosey ha anche tenuto una buona presentazione su Cocoa Unit Testing presso la Lake Forest, CA Cocoaheads meeting a dicembre. Eccone un video: vimeo.com/2725498
Grant Limberg

1
Quando ho iniziato a lavorare su iOS circa un anno fa, ho scoperto che OCUnit aveva (per me) un grave inconveniente: non potevo eseguirlo sul simulatore o sul dispositivo. Da allora potrebbe essere cambiato: non ho controllato, ma sto usando GHUnit semplicemente per questo motivo.
Drekka,

1
Ci sono video ufficiali degli sviluppatori Apple su questo argomento? Ho attraversato il WWDC 2011 e il 2010 ma non sono riuscito a trovare ... strano dato che i test sono importanti sì?
Robert,

4
Il link Guida test unità Xcode è stato spostato in Guida test unità Xcode
Steven Green

5
Xcode 5 ora ha XCTest include ancora OCUnit? Aggiornerai la tua risposta con le informazioni per XCode 5.
BrightIntelDusk

50

Dai un'occhiata a GHUnit di Gabriel Handford:

"Gli obiettivi di GHUnit sono:

Esegue test unitari all'interno di XCode, consentendo di utilizzare pienamente il debugger XCode. Una semplice GUI per aiutarti a visualizzare i tuoi test. Mostra tracce dello stack. Essere installabili come framework (per app Cocoa) con una configurazione target semplice (o no); o facile da impacchettare nel tuo progetto iPhone. "


5
+1 per GHUnit! Sono nuovo nello sviluppo di iPhone e posso onestamente dire che avevo GHUnit installato e funzionante senza problemi (le istruzioni sono perfette) rispetto all'incubo assoluto di OCUnit e alla leggera emicrania di GTM. GHUnit vince per facilità d'uso e facilità!
Tim Reddy,

3
Nota che questa risposta e i relativi commenti sono stati scritti qualche tempo fa. Xcode offre ora un supporto molto migliore per i test basati su OCUnit, semplificando l'impostazione dei test e l'esecuzione nel debugger.
Kristopher Johnson,

1
Da allora questo progetto è stato deprecato.
BigHeadCreations



12

Si noti che il progetto Google Toolbox per Mac (GTM) estende / aumenta semplicemente il framework SenTestingKit di Apple (che è, di per sé, basato su OCUnit). Come si dice sul sito del progetto:

GTM ha diversi miglioramenti allo standard SenTestingKit che ti consente di eseguire test dell'unità UI, test dell'unità di associazione automatizzata, tracciamento dei log e test delle unità su iPhone, nonché strumenti per eseguire test statici e dinamici del tuo codice.

Nota il seguente commento sui test dell'interfaccia utente:

GTM offre un ampio supporto per i test delle unità dell'interfaccia utente. Supporta il test dell'imaging e / o dello stato interno di quasi tutti gli oggetti dell'interfaccia utente Cocoa / UIKit standard e semplifica l'estensione di questo supporto ai propri oggetti dell'interfaccia utente.

Vedi la loro pagina " Verifica del codice e unit test " per istruzioni su come usarlo.


12

Sono giunto alla conclusione che GHUnit è il framework di test più avanzato per Objective-C. Ho fatto una carrellata di framework di test sul mio blog. È il più flessibile in termini di distribuzione (iphone, simulatore o mac OS nativo) e capacità di asserzione. Poiché si basa su GTM, eredita tutti i vantaggi di GTM rispetto a SenTestingKit ma ne aggiunge anche molto di più. Un altro vantaggio è che viene mantenuto molto attivamente.

Ho fatto uno sforzo per integrare OCMock in GHUnit, funziona benissimo !. Puoi ottenere il codice su github .


12

Mi rendo conto che questa è una vecchia domanda, ma se preferisci i test in stile BDD (rspec, Jasmine, ecc.) Rispetto ai test in stile xUnit (Test :: Unit, JSUnit, JUnit, ecc.), Potresti considerare di provare Cedar . Cedar porta i test in stile BDD su Objective-C, ora che il linguaggio supporta le chiusure.

Stiamo usando felicemente Cedar per i nostri progetti iOS presso Pivotal Labs e stiamo lavorando attivamente per migliorarlo. Eventuali feedback o suggerimenti sono benvenuti all'indirizzo cedar-discuss@googlegroups.com


10

Vorrei anche raccomandare l'uso di strumenti di copertura per vedere quale parte del codice è coperta con unit test e quali no. La copertura di base di linee e codici di diramazione può essere generata con lo strumento GCOV . Se vuoi generare buoni rapporti sulla copertura HTML ci sono LCOV e ZCOV che fanno proprio questo.









3

Specta è un moderno framework TDD (Test Driven Development) / BDD (Behavior Driven Development) che gira su XCTest. Supporta test unitari per progetti iOS e Mac OS X.


0

Spero che tu possa usare 'SenTestKit', dal quale puoi testare ogni singolo metodo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.