Qual è il modo migliore per testare il codice Objective-C?
-
09-06-2019 - |
Domanda
Quali framework esistono per testare l'unità del codice Objective-C?Vorrei un framework che si integri bene con Apple Xcode.
Soluzione
Xcode include XCTest, che è simile a OCUnit, un framework di unit test Objective-C e offre il supporto completo per l'esecuzione di unit test basati su XCTest come parte del processo di compilazione del progetto.Il supporto per i test unitari di Xcode è descritto nel file Panoramica di Xcode:Utilizzo dei test unitari.
Nei giorni di Xcode 2, ho scritto una serie di post sul blog su come eseguire alcune attività comuni con gli unit test di Xcode:
- Test unitari dei framework Cocoa
- Debug degli unit test del framework Cocoa
- Test unitari delle applicazioni Cocoa
- Debug degli unit test dell'applicazione Cocoa
Nonostante utilizzi OCUnit anziché XCTest, i concetti sono sostanzialmente gli stessi.
Infine, ho anche scritto alcuni post su come scrivere test per le interfacce utente Cocoa;il modo in cui è strutturato Cocoa lo rende relativamente semplice, perché nella maggior parte dei casi non è necessario far girare un ciclo di eventi o qualcosa del genere.
- Fidarsi ma verificare.
- Test unitari delle interfacce utente Cocoa:Obiettivo-Azione
- Test unitari delle interfacce utente Cocoa:Leganti al cacao
Ciò consente di eseguire uno sviluppo basato sui 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.
Altri suggerimenti
Guardare Unità GH di Gabriel Handford:
"Gli obiettivi di GHUnit sono:
Esegue i test unitari all'interno di Xcode, consentendo di utilizzare completamente il debugger Xcode.Una semplice GUI per aiutarti a visualizzare i tuoi test.Mostra tracce dello stack.Sii instabile come framework (per app di cacao) con una configurazione target semplice (o meno);o facile da impacchettare nel progetto del tuo iPhone. "
Ho iniziato a utilizzare il banco di prova di Google Toolbox per iPhone e per me ha funzionato alla grande.
Guardare OCUnit.La rete di sviluppatori di Apple ha un'ottima introduzione.
Tieni presente che il progetto Google Toolbox per Mac (GTM) estende/potenzia semplicemente il framework SenTestingKit di Apple (che è esso stesso basato su OCUnit).Come si dice sul sito del progetto:
GTM ha diversi miglioramenti per lo standard SentestKit che consente di eseguire test unitari UI, test automatizzati di unità di rilegatura, monitoraggio dei registri e test unitari su iPhone, nonché strumenti per eseguire test statici e dinamici del codice.
Tieni presente il seguente commento sul test dell'interfaccia utente:
GTM ha un ampio supporto per i test delle unità di interfaccia utente.Supporta testare sia l'imaging che o lo stato interno di quasi tutti gli oggetti UI standard di cacao/UIKIT e ti rende facile estendere questo supporto ai tuoi oggetti dell'interfaccia utente.
Vedi il loro "Verifica del codice e test unitario" pagina per istruzioni su come utilizzarlo.
Sono giunto alla conclusione che GHUnit è il framework di test più avanzato per Objective-C.Ho fatto un arrotondare di testing dei framework sul mio blog.È il più flessibile in termini di implementazione (iphone, simulatore o mac os nativo) e di affermazione delle capacità.Poiché è basato 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 compiuto sforzi per integrarmi OCMock in GHUnit, funziona alla grande!.Puoi ottenere il codice 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.), allora potresti prendere in considerazione il check-out Cedro.Cedar porta i test in stile BDD su Objective-C, ora che il linguaggio supporta le chiusure.
Utilizziamo felicemente Cedar per i nostri progetti iOS su Laboratori cruciali, e stiamo lavorando attivamente per migliorarlo.Eventuali feedback o suggerimenti sono benvenuti all'indirizzo cedar-discuss@googlegroups.com
Consiglierei anche di utilizzare strumenti di copertura per vedere quali parti del codice sono coperte da unit test e quali no.La copertura di base della linea e del codice filiale può essere generata con GCOV attrezzo.Se vuoi generare dei bei rapporti sulla copertura HTML, ci sono LCOV E ZCOV che fanno proprio questo.
Raccomando gh-unit, ha una bella GUI per i risultati dei test.
IL Supporto unit test in bundle all'interno di xcode (per la sua semplice configurazione) combinato con ocrunner (per qualche bontà di autotest/ringhio) è attualmente la mia configurazione preferita di test unitario Obj-C.
eccone un sacco
Sen:te (il creatore del framework di test incluso con Xcode) spiega come utilizzare OCUnit con un progetto iPhone: test-unità-iphone-ipad-semplice.
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 scarica il libro di Daniel Steinberg "Test Driving iOS Development with Kiwi"test-drive-sviluppo-ios
Utilizzo SimpleUnitTest che funziona con le librerie di iPhone e iPad.
http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html
Viene fornito con un modello Xcode di test unitario per aggiungere facilmente una classe di test unitario.Avvolge GTM.
Puoi letteralmente inserirlo in un progetto attivo e iniziare ad aggiungere test unitari entro 3 minuti (o meno).
Spettacolo è un moderno framework TDD (Test Driven Development)/BDD (Behavior Driven Development) che funziona su XCTest.Supporta test unitari per progetti iOS e Mac OS X.
Spero che tu possa usare "SenTestKit", da cui puoi testare ogni singolo metodo.