Objective-C Language
Unit testen met Xcode
Zoeken…
Opmerkingen
Afhankelijkheden :
- Als de toepassing bibliotheken of cacaopods van derden gebruikt, moeten die bibliotheken of pods ook worden geïnstalleerd voor de test.
- Testklasse (Test Suit) breidt XCTestCase uit.
Opfrissen voordat u begint:
Alle testklassen hebben twee methoden in gemeenschappelijke setUp & tearDown.
setUp draait voor elke testcase & tearDown na elke testcase.
Testgevallen lopen alfabetisch.
In Test Driven Development is het goed om eerst dummy-testgegevens te maken.
Testcase-methoden beginnen met het trefwoord "test".
Testmethoden accepteren geen parameters en retourneren geen waarde.
Bijlage:
Er zijn verschillende andere methoden om het verwachte resultaat en het werkelijke resultaat van een bewerking te vergelijken. Sommige van die methoden worden hieronder vermeld:
- XCTAssertNil (expressie, opmerking) genereert een fout als expression! = Nul.
- XCTAssertNotNil (expressie, opmerking) genereert een fout als expression = nul.
- XCTAssert (expressie, opmerking) genereert een fout als expression == false.
- XCTAssertTrue (expressie, opmerking) genereert een fout als expression == false.
- XCTAssertFalse (expressie, opmerking) genereert een fout als expression! = False.
- XCTAssertEqualObjects (expression1, expression2, comment) genereert een fout als expression1 niet gelijk is aan expression2.
- XCTAssertEqualObjects (expression1, expression2, comment) genereert een fout als expression1 gelijk is aan expression2.
- XCTAssertNotEqual (expression1, expression2, comment) genereert een fout als expression1 == expression2.
- XCTAssertEqual (expression1, expression2, comment) genereert een fout als expression1! = Expression2.
- XCTAssertGreaterThanOrEqual (expression1, expression2, comment) genereert een fout wanneer (expression1 <expression2).
Een codeblok of een andere methode testen:
- Importeer de klasse, die de te testen methode bevat.
- Voer de bewerking uit met dummy-gegevens.
- Vergelijk nu het bedrijfsresultaat met het verwachte resultaat.
- (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");
}
Voer indien nodig de dummy-gegevens in voor de te testen methode en vergelijk vervolgens de verwachte en werkelijke resultaten.
Asynchroon codeblok 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];
}
- Voer indien nodig de dummy-gegevens in voor de te testen methode.
- De test zal hier pauzeren en de run-loop uitvoeren totdat de time-out is bereikt of alle verwachtingen zijn vervuld.
- Time-out is de verwachte tijd voor het asynchrone blok om te reageren.
Prestaties van een codeblok meten:
1. Voor synchrone methoden:
- (void)testPerformanceReverseString {
NSString *originalString = @"hi_my_name_is_siddharth";
[self measureBlock:^{
[self.someObject reverseString:originalString];
}];
}
2. Voor 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) {
}];
}];
}
- Dit prestatie-meetblok wordt 10 keer achter elkaar uitgevoerd en vervolgens wordt het gemiddelde berekend, en op basis van dit gemiddelde prestatieresultaat wordt gemaakt en wordt de basislijn geaccepteerd voor verdere evaluatie.
- Het prestatieresultaat wordt vergeleken met de vorige testresultaten en basislijn met een aanpasbare max standaarddeviatie.
Testpakken uitvoeren:
Voer alle tests uit door Product> Test te kiezen. Klik op het pictogram Test Navigator om de status en resultaten van de tests te bekijken. U kunt een testdoel aan een project toevoegen (of een klasse aan een test toevoegen) door op de knop Toevoegen (plus) linksonder in de testnavigator te klikken. Als u de broncode voor een bepaalde test wilt bekijken, selecteert u deze in de testlijst. Het bestand wordt geopend in de broncode-editor.
Notitie:
Zorg ervoor dat het vakje voor het opnemen van een unit-testgeval is ingeschakeld wanneer u een nieuw project maakt, zoals hieronder wordt weergegeven: