Welche Frameworks gibt es für Unit-Test-Objective-C-Code? Ich möchte ein Framework, das sich gut in Apple Xcode integrieren lässt.
Welche Frameworks gibt es für Unit-Test-Objective-C-Code? Ich möchte ein Framework, das sich gut in Apple Xcode integrieren lässt.
Antworten:
Xcode enthält XCTest, das OCUnit , einem Objective-C-Framework für Komponententests , ähnelt und die vollständige Ausführung von XCTest-basierten Komponententests als Teil des Erstellungsprozesses Ihres Projekts unterstützt. Die Unterstützung von Xcode-Komponententests wird in der Xcode-Übersicht: Verwenden von Komponententests beschrieben .
In den 2 Tagen von Xcode habe ich eine Reihe von Weblog-Posts geschrieben, in denen erläutert wird, wie einige allgemeine Aufgaben beim Testen von Xcode-Einheiten ausgeführt werden:
Trotz der Verwendung von OCUnit anstelle von XCTest sind die Konzepte weitgehend identisch.
Schließlich schrieb ich auch einige Beiträge darüber, wie man Tests für Cocoa-Benutzeroberflächen schreibt. Die Art und Weise, wie Cocoa strukturiert ist, macht es relativ einfach, da Sie in den meisten Fällen keine Ereignisschleife oder ähnliches drehen müssen.
Auf diese Weise können Sie nicht nur Ihren Code auf Modellebene, sondern auch Ihren Code auf Controller- und sogar Ansichtsebene testgetrieben entwickeln.
Schauen Sie sich GHUnit von Gabriel Handford an:
"Die Ziele von GHUnit sind:
Führt Unit-Tests in XCode aus, sodass Sie den XCode-Debugger vollständig nutzen können. Eine einfache Benutzeroberfläche zur Visualisierung Ihrer Tests. Stapelspuren anzeigen. Als Framework (für Cocoa-Apps) mit einer einfachen (oder nicht) Zieleinrichtung installierbar sein; oder einfach in Ihr iPhone-Projekt zu packen. "
Ich habe angefangen, das Google Toolbox-Testgerät für das iPhone zu verwenden, und es funktioniert hervorragend für mich.
Schauen Sie sich OCUnit an . Apples Entwicklernetzwerk bietet eine großartige Einführung .
Beachten Sie, dass das Google Toolbox für Mac (GTM) -Projekt lediglich das SenTestingKit-Framework von Apple erweitert / erweitert (das selbst auf OCUnit basiert). Wie es auf der Projektseite heißt:
GTM verfügt über mehrere Verbesserungen des Standard-SenTestingKit, mit denen Sie UI-Unit-Tests, automatisierte Binding-Unit-Tests, Protokollverfolgung und Unit-Tests auf dem iPhone sowie Tools zum statischen und dynamischen Testen Ihres Codes durchführen können.
Beachten Sie den folgenden Kommentar zum Testen der Benutzeroberfläche:
GTM bietet umfassende Unterstützung für Unit-Tests der Benutzeroberfläche. Es unterstützt das Testen des Imaging- und / oder internen Status fast aller Standardobjekte der Cocoa / UIKit-Benutzeroberfläche und erleichtert Ihnen die Erweiterung dieser Unterstützung auf Ihre eigenen Benutzeroberflächenobjekte.
Anweisungen zur Verwendung finden Sie auf der Seite " Codeüberprüfung und Komponententests ".
Ich bin zu dem Schluss gekommen, dass GHUnit das fortschrittlichste Testframework für Objective-C ist. Ich habe in meinem Blog eine Zusammenfassung der Test-Frameworks erstellt. Es ist am flexibelsten in Bezug auf Bereitstellung (iPhone, Simulator oder Mac OS Native) und Assert-Funktionen. Da es auf GTM basiert, erbt es alle Vorteile von GTM gegenüber SenTestingKit, fügt aber noch viel mehr hinzu. Ein weiterer Bonus ist, dass es sehr aktiv gepflegt wird.
Ich habe mich bemüht, OCMock in GHUnit zu integrieren , es funktioniert großartig!. Sie können den Code auf Github erhalten .
Mir ist klar, dass dies eine alte Frage ist, aber wenn Sie Tests im BDD-Stil (rspec, Jasmine usw.) gegenüber Tests im xUnit-Stil (Test :: Unit, JSUnit, JUnit usw.) bevorzugen, sollten Sie Cedar ausprobieren . Cedar bringt Tests im BDD-Stil zu Objective-C, da die Sprache jetzt Schließungen unterstützt.
Wir verwenden Cedar gerne für unsere iOS-Projekte bei Pivotal Labs und arbeiten aktiv daran, es zu verbessern. Feedback oder Vorschläge sind unter cedar-discuss@googlegroups.com willkommen
Ich würde auch empfehlen, Coverage-Tools zu verwenden, um festzustellen, welcher Teil des Codes mit Unit-Tests abgedeckt ist und welcher nicht. Mit dem GCOV- Tool kann eine grundlegende Abdeckung von Leitungs- und Zweigcodes generiert werden . Wenn Sie nette HTML-Berichterstattungsberichte erstellen möchten, gibt es LCOV und ZCOV , die genau das tun.
Ich empfehle gh-unit, es hat eine schöne GUI für Testergebnisse.
Die in xcode gebündelte Unterstützung für Unit-Tests (für die einfache Einrichtung) in Kombination mit ocrunner (für einige Autotest- / Growl- Vorteile ) ist derzeit meine bevorzugte Einrichtung für Obj-C-Unit-Tests.
hier ist eine ganze Menge von ihnen
Sen: te (der Entwickler des in Xcode enthaltenen Testframeworks) erklärt, wie OCUnit mit einem iPhone-Projekt verwendet wird: simple-iphone-ipad-unit-test .
Matt Gallagher von Cocoa with Love hat einen sehr guten Artikel über Unit-Tests.
Ich würde vorschlagen, sich mit Kiwi zu befassen, einem Open-Source-BDD-Testframework für iOS: Kiwi
Schauen Sie sich das WIKI des Projekts an, um Daniel Steinbergs Buch "Test Driving iOS Development with Kiwi" zu testen oder zu erhalten
Ich benutze SimpleUnitTest funktioniert mit iPhone und iPad Bibliotheken.
http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html
Es wird mit einer Unit-Test-Xcode-Vorlage geliefert, mit der Sie problemlos eine Unit-Test-Klasse hinzufügen können. Wraps GTM.
Sie können es buchstäblich in ein aktives Projekt einfügen und innerhalb von 3 Minuten (oder weniger) mit dem Hinzufügen von Komponententests beginnen.