Objective-C Language
Unit-Test mit Xcode
Suche…
Bemerkungen
Abhängigkeiten :
- Wenn die Anwendung Bibliotheken von Drittanbietern oder Kakaopods verwendet, müssen diese Bibliotheken oder Pods auch zum Testen installiert werden.
- Testklasse (Test Suit) erweitert XCTestCase.
Holen Sie sich aufgeräumt, bevor Sie beginnen:
Alle Testklassen verfügen über zwei gemeinsame Methoden von setUp und tearDown.
SetUp läuft vor jedem Testfall und tearDown nach jedem Testfall.
Testfälle laufen alphabetisch ab.
In Test Driven Development sollten Sie zunächst Dummy-Testdaten erstellen.
Testfallmethoden beginnen mit dem Schlüsselwort "test".
Testmethoden akzeptieren keine Parameter und geben keinen Wert zurück.
Blinddarm:
Es gibt mehrere andere Methoden, um das erwartete Ergebnis und das tatsächliche Ergebnis einer Operation zu vergleichen. Einige dieser Methoden sind unten aufgeführt:
- XCTAssertNil (Ausdruck, Kommentar) erzeugt einen Fehler, wenn Ausdruck! = Null.
- XCTAssertNotNil (Ausdruck, Kommentar) generiert einen Fehler, wenn Ausdruck = Null ist.
- XCTAssert (Ausdruck, Kommentar) generiert einen Fehler, wenn der Ausdruck == false ist.
- XCTAssertTrue (Ausdruck, Kommentar) generiert einen Fehler, wenn der Ausdruck == false ist.
- XCTAssertFalse (Ausdruck, Kommentar) erzeugt einen Fehler, wenn Ausdruck! = False.
- XCTAssertEqualObjects (expression1, expression2, comment) generiert einen Fehler, wenn expression1 nicht gleich expression2 ist.
- XCTAssertEqualObjects (expression1, expression2, comment) generiert einen Fehler, wenn expression1 gleich expression2 ist.
- XCTAssertNotEqual (Ausdruck1, Ausdruck2, Kommentar) generiert einen Fehler, wenn Ausdruck1 == Ausdruck2.
- XCTAssertEqual (expression1, expression2, comment) generiert einen Fehler, wenn expression1! = Expression2.
- XCTAssertGreaterThanOrEqual (Ausdruck1, Ausdruck2, Kommentar) erzeugt einen Fehler beim (Ausdruck1 <Ausdruck2).
Testen eines Codeblocks oder einer Methode:
- Importieren Sie die Klasse, die die zu testende Methode enthält.
- Führen Sie die Operation mit Dummy-Daten aus.
- Vergleichen Sie nun das Betriebsergebnis mit dem erwarteten Ergebnis.
- (void)testReverseString{
NSString *originalString = @"hi_my_name_is_siddharth";
NSString *reversedString = [self.someObject reverseString:originalString];
NSString *expectedReversedString = @"htrahddis_si_eman_ym_ih";
XCTAssertEqualObjects(expectedReversedString, reversedString, @"The reversed string did not match the expected reverse");
}
Geben Sie ggf. die Dummy-Daten an die zu testende Methode & vergleichen Sie dann die erwarteten und tatsächlichen Ergebnisse.
Asynchroner Codeblock testen:
- (void)testDoSomethingThatTakesSomeTime{
XCTestExpectation *completionExpectation = [self expectationWithDescription:@"Long method"];
[self.someObject doSomethingThatTakesSomeTimesWithCompletionBlock:^(NSString *result) {
XCTAssertEqualObjects(@"result", result, @"Result was not correct!");
[completionExpectation fulfill];
}];
[self waitForExpectationsWithTimeout:5.0 handler:nil];
}
- Führen Sie die Dummy-Daten bei Bedarf der zu testenden Methode zu.
- Der Test wird hier unterbrochen und die Laufschleife ausgeführt, bis das Zeitlimit erreicht ist oder alle Erwartungen erfüllt sind.
- Timeout ist die erwartete Zeit für die Antwort des asynchronen Blocks.
Messen der Leistung eines Codeblocks:
1. Für synchrone Methoden:
- (void)testPerformanceReverseString {
NSString *originalString = @"hi_my_name_is_siddharth";
[self measureBlock:^{
[self.someObject reverseString:originalString];
}];
}
2. Für asynchrone Methoden:
- (void)testPerformanceOfAsynchronousBlock {
[self measureMetrics:@[XCTPerformanceMetric_WallClockTime] automaticallyStartMeasuring:YES forBlock:^{
XCTestExpectation *expectation = [self expectationWithDescription:@"performanceTestWithResponse"];
[self.someObject doSomethingThatTakesSomeTimesWithCompletionBlock:^(NSString *result) {
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:5.0 handler:^(NSError *error) {
}];
}];
}
- Dieser Leistungsmessungsblock wird zehnmal hintereinander ausgeführt und dann wird der Durchschnitt berechnet und auf der Grundlage dieses Durchschnittsergebnisses wird ein Ergebnis erstellt und die Baseline wird zur weiteren Auswertung akzeptiert.
- Das Leistungsergebnis wird mit den vorherigen Testergebnissen und der Basislinie mit einer anpassbaren maximalen Standardabweichung verglichen.
Laufende Testanzüge:
Führen Sie alle Tests aus, indem Sie Produkt> Test auswählen. Klicken Sie auf das Test Navigator-Symbol, um den Status und die Ergebnisse der Tests anzuzeigen. Sie können einem Projekt ein Testziel hinzufügen (oder einem Test eine Klasse hinzufügen), indem Sie auf die Schaltfläche Hinzufügen (Plus) in der unteren linken Ecke des Testnavigators klicken. Um den Quellcode für einen bestimmten Test anzuzeigen, wählen Sie ihn aus der Testliste aus. Die Datei wird im Quellcode-Editor geöffnet.
Hinweis:
Stellen Sie sicher, dass das Kontrollkästchen Include-Testfall einschließen aktiviert ist, wenn Sie ein neues Projekt erstellen (siehe unten):