Ich gehe eine Anwendung durch und füge Unit Tests hinzu. Die Anwendung wird mit Storyboards geschrieben und unterstützt iOS 6.1 und höher.
Ich konnte alle üblichen Rückgabemethoden problemlos testen. Allerdings bin ich momentan mit einem bestimmten Test, den ich durchführen möchte, nicht zufrieden:
Im Wesentlichen habe ich eine Methode, lasst es doLogin nennen:
%Vor%Ich möchte also testen, ob entweder der Abschnitt aufgerufen wird und ob die Variable gesetzt ist oder ob der Viewable-Controller MemorableWord geladen ist und die darin enthaltenen Variablen korrekt sind. Die hier in der doLogin-Methode festgelegte Variable wird in der prepareForSegue-Methode an den Ziel-View-Controller des memoryWord-Segments übergeben.
Ich habe OCMock eingerichtet und arbeite, und ich benutze auch XCTest als mein Unit-Testframework. Ist jemand in der Lage gewesen, einen Komponententest zu produzieren, um eine solche Situation abzudecken?
Es scheint so, dass Google und SO in Bezug auf Informationen rund um diesen Bereich ziemlich leer sind. Es gibt viele Beispiele für einfache grundlegende Tests, die für die komplexere Realität des iOS-Testens ziemlich irrelevant sind.
Sie sind auf dem richtigen Weg, Ihr Test möchte das überprüfen:
Sie sollten also den vollen Ablauf vom Login-Button bis zur Ausführung startenSegue:
%Vor%Sie müssen eine Eigenschaft für "Kriterien" implementieren, damit es einen Getter gibt, den Sie mit 'expect' verspotten können.
Es ist wichtig zu erkennen, dass "erwarten" nur einen Aufruf an den Getter ausspioniert, nachfolgende Aufrufe werden mit "Unerwartete Methode aufgerufen ..." fehlschlagen. Sie können "stub" verwenden, um sich über alle Anrufe lustig zu machen, aber das bedeutet, dass immer derselbe Wert zurückgegeben wird.
IMHO scheint dies ein Testszenario zu sein, für das not properly
eingerichtet wurde.
Bei Unit-Tests sollten Sie nur test units
(z. B. einzelne Methoden) Ihrer Anwendung verwenden. Diese Einheiten sollten independent
von allen anderen Teilen Ihrer Anwendung sein. Dies garantiert Ihnen, dass eine einzelne Funktion ordnungsgemäß ohne Nebenwirkungen getestet wird.
Übrigens: OCMock
ist ein großartiges Werkzeug, um alle Teile, die Sie nicht testen wollen, auszuspionieren und somit Nebenwirkungen zu erzeugen.
Im Allgemeinen scheint Ihr Test eher wie ein Integrationstest
zu sein IT is the phase of software testing, in which individual software modules are combined and tested as a group
.
Was würde ich in Ihrem Fall tun?
Ich würde entweder einen Integrationstest definieren, bei dem ich alle Teile meiner Ansicht richtig testen würde und deshalb indirekt meine View-Controller testen würde. Sehen Sie sich ein gutes Test-Framework für diese Art von Szenario an - KIF
Oder ich würde Einzel-Unit-Tests für die Methode "doLogin" sowie die Methode zur Berechnung der Kriterien in Ihrer if-Anweisung durchführen. Alle Abhängigkeiten sollten gemunkelt werden, was bedeutet, dass Sie innerhalb Ihres doLogin-Tests sogar die Kriterienmethode vortäuschen sollten ...
Der einzige Weg, den ich sehen kann, um dies zu testen, ist die Verwendung von partiellen Mocks:
%Vor%Natürlich ist dies nur ein Beispiel für den Test und ist nicht wirklich der Test, den ich ausführe, sondern hoffentlich zeigt, wie ich diese Methode in meinem View-Controller testen muss. Wie Sie sehen können, wird, wenn% code_% nicht aufgerufen wird, die Überprüfung mit der Ursache fehlgeschlagen.
Tags und Links objective-c unit-testing ios xctest ocmock