Was ist der beste Weg, um Objective-C-Code einem Unit-Test zu unterziehen?
-
09-06-2019 - |
Frage
Welche Frameworks gibt es für Unit-Tests von Objective-C-Code?Ich hätte gerne ein Framework, das sich gut in Apple Xcode integrieren lässt.
Lösung
Xcode enthält XCTest, das ähnlich ist OCUnit, ein Objective-C-Unit-Test-Framework, und bietet volle Unterstützung für die Ausführung von XCTest-basierten Unit-Tests als Teil des Build-Prozesses Ihres Projekts.Die Unit-Test-Unterstützung von Xcode wird im beschrieben Xcode-Übersicht:Verwenden von Unit-Tests.
In den Xcode 2-Tagen habe ich eine Reihe von Weblog-Beiträgen darüber geschrieben, wie man einige häufige Aufgaben mit Xcode-Unit-Tests durchführt:
- Unit-Test von Cocoa-Frameworks
- Debuggen von Unit-Tests des Cocoa-Frameworks
- Unit-Test von Kakaoanwendungen
- Debuggen von Unit-Tests für Cocoa-Anwendungen
Obwohl OCUnit anstelle von XCTest verwendet wird, sind die Konzepte weitgehend dieselben.
Schließlich habe ich auch ein paar Beiträge darüber geschrieben, 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.
- Vertrauen, aber überprüfen.
- Unit-Test von Cocoa-Benutzeroberflächen:Ziel-Aktion
- Unit-Test von Cocoa-Benutzeroberflächen:Kakaobindungen
Dies ermöglicht eine testgetriebene Entwicklung nicht nur für Ihren Code auf Modellebene, sondern auch für Ihren Code auf Controller-Ebene und sogar auf Ansichtsebene.
Andere Tipps
Kasse GHUnit von Gabriel Handford:
„Die Ziele von GHUnit sind:
Führen Sie Unit -Tests in Xcode aus, sodass Sie den Xcode -Debugger vollständig verwenden können.Eine einfache GUI, mit der Sie Ihre Tests visualisieren können.Stapelspuren zeigen.Seien Sie als Framework (für Kakao -Apps) mit einem einfachen (oder nicht) Zielaufbau installierbar;oder einfach in Ihr iPhone -Projekt zu verpacken. "
Ich habe angefangen, das Google Toolbox-Testgerät für das iPhone zu verwenden, und es funktioniert bei mir hervorragend.
Kasse OCUnit.Apples Entwicklernetzwerk hat eine tolle Einführung.
Beachten Sie, dass das Google Toolbox for Mac (GTM)-Projekt lediglich das SenTestingKit-Framework von Apple (das selbst auf OCUnit basiert) erweitert/erweitert.Wie es auf der Projektseite heißt:
GTM hat mehrere Verbesserungen zum Standard -SentestingKit, sodass Sie UI -Unit -Tests, automatisierte Bindungs -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 von Benutzeroberflächen:
GTM hat eine umfassende Unterstützung für Benutzeroberflächen -Unit -Tests.Es unterstützt das Testen des Bildgebungs- und/oder inneren Zustands fast aller Standard -Kakao-/UII -UI -Objekte und erleichtert es Ihnen, diese Unterstützung auf Ihre eigenen UI -Objekte zu erweitern.
Sehen Sie ihre „Codeüberprüfung und Unit-TestsAnweisungen zur Verwendung finden Sie auf der Seite „.
Ich bin zu dem Schluss gekommen, dass GHUnit das fortschrittlichste Test-Framework für Objective-C ist.Ich habe eine gemacht aufrunden zum Testen von Frameworks auf meinem Blog.Es ist am flexibelsten in Bezug auf die Bereitstellung (iPhone, Simulator oder natives Mac OS) und die Durchsetzungsfunktionen.Da es auf GTM basiert, übernimmt es alle Vorteile von GTM gegenüber SenTestingKit, fügt aber noch viel mehr hinzu.Ein weiterer Pluspunkt ist, dass es sehr aktiv gepflegt wird.
Ich habe Anstrengungen zur Integration unternommen OCMock in GHUnit, es funktioniert großartig!.Sie können den Code erhalten Github.
Mir ist klar, dass dies eine alte Frage ist, aber wenn Sie Tests im BDD-Stil (rspec, Jasmine usw.) dem Testen im xUnit-Stil (Test::Unit, JSUnit, JUnit usw.) vorziehen, sollten Sie einen Blick darauf werfen Zeder.Cedar bringt Tests im BDD-Stil zu Objective-C, da die Sprache nun Abschlüsse unterstützt.
Wir verwenden Cedar gerne für unsere iOS-Projekte unter Zentrale Labore, und wir arbeiten aktiv daran, es zu verbessern.Feedback oder Vorschläge sind unter cedar-discuss@googlegroups.com willkommen
Ich würde außerdem empfehlen, Coverage-Tools zu verwenden, um zu sehen, welche Teile des Codes durch Unit-Tests abgedeckt werden und welche nicht.Mit dem kann eine grundlegende Leitungs- und Zweigstellencodeabdeckung generiert werden GCOV Werkzeug.Wenn Sie schöne HTML-Abdeckungsberichte erstellen möchten, gibt es diese LCOV Und ZCOV die genau das tun.
Ich empfehle gh-unit, es hat eine schöne GUI für Testergebnisse.
Der Unit-Testing-Unterstützung in xcode gebündelt (wegen der einfachen Einrichtung) kombiniert mit ocrunner (für etwas Autotest/Growl-Güte) ist derzeit mein Lieblings-Obj-C-Unit-Test-Setup.
Hier gibt es eine ganze Menge davon
Sen:te (der Ersteller des in Xcode enthaltenen Test-Frameworks) erklärt, wie man OCUnit mit einem iPhone-Projekt verwendet: einfacher-iphone-ipad-unit-test.
Matt Gallagher von Cocoa with Love hat eine sehr guter Artikel zum Unit-Testen.
Ich würde vorschlagen, einen Blick auf Kiwi zu werfen, ein Open-Source-BDD-Test-Framework für iOS:Kiwi
Schauen Sie sich zum Starten das WIKI des Projekts an oder holen Sie sich Daniel Steinbergs Buch „Test Driving iOS Development with Kiwi“.Testfahrten-iOS-Entwicklung
Ich verwende SimpleUnitTest und funktioniert mit iPhone- und iPad-Bibliotheken.
http://cbess.blogspot.com/2010/05/simple-iphone-ipad-unit-test.html
Im Lieferumfang ist eine Unit-Test-Xcode-Vorlage enthalten, mit der Sie ganz einfach 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.
Specta ist ein modernes TDD(Test Driven Development)/BDD(Behavior Driven Development)-Framework, das auf XCTest läuft.Es unterstützt Unit-Tests für iOS- und Mac OS X-Projekte.
Ich hoffe, Sie können „SenTestKit“ verwenden, mit dem Sie jede einzelne Methode testen können.