Quali framework esistono per testare il codice Objective-C? Vorrei un framework che si integri perfettamente con Apple Xcode.
Quali framework esistono per testare il codice Objective-C? Vorrei un framework che si integri perfettamente con Apple Xcode.
Risposte:
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.
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. "
Ho iniziato a utilizzare il banco di prova Google Toolbox per iPhone, e sta funzionando alla grande per me.
Dai un'occhiata a OCUnit . La rete di sviluppatori di Apple ha una grande introduzione .
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.
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 .
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
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.
Raccomando gh-unit, ha una bella interfaccia grafica per i risultati dei test.
Il supporto di Unit Testing in bundle con xcode (per la sua semplice configurazione) combinato con ocrunner (per un po 'di autotest / bontà Growl) è attualmente la mia configurazione di test di unità Obj-C preferita.
eccone un sacco
Sen: te (il creatore del framework di test incluso in Xcode) spiega come utilizzare OCUnit con un progetto iPhone: simple-iphone-ipad-unit-test .
Matt Gallagher di Cocoa with Love ha un ottimo articolo sui test unitari.
Suggerirei di esaminare Kiwi, un framework di test BDD open source per iOS: Kiwi
Dai un'occhiata al WIKI del progetto per iniziare o ottenere il libro di Daniel Steinberg "Test Driving iOS Development with Kiwi" test-driving-ios-development
Uso SimpleUnitTest funziona con le librerie per iPhone e iPad.
http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html
Viene fornito con un modello Xcode di unit test per aggiungere facilmente una classe di unit test. Avvolge GTM.
Puoi letteralmente rilasciarlo in un progetto attivo e iniziare ad aggiungere test unitari entro 3 minuti (o meno).
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.