Objective-C Language
Testy jednostkowe przy użyciu Xcode
Szukaj…
Uwagi
Zależności :
- Jeśli aplikacja korzysta z bibliotek stron trzecich lub strąków kakaowych, wówczas te biblioteki lub strąki należy zainstalować również w celu przetestowania.
- Klasa testowa (Test Suit) rozszerza XCTestCase.
Przed rozpoczęciem szczotkowania się:
Wszystkie klasy testowe mają dwie metody we wspólnej setUp & tearDown.
setUp działa przed każdą testcase i tearDown po każdej testcase.
Przypadki testowe są uruchamiane alfabetycznie.
W Test Driven Development dobrze jest najpierw utworzyć fikcyjne dane testowe.
Metody przypadków testowych zaczynają się od słowa kluczowego „test”.
Metody testowe nie akceptują parametrów i nie zwracają żadnej wartości.
Dodatek:
Istnieje kilka innych metod porównywania oczekiwanego wyniku i rzeczywistego wyniku operacji. Niektóre z tych metod są wymienione poniżej:
- XCTAssertNil (wyrażenie, komentarz) generuje błąd, jeśli wyrażenie! = Zero.
- XCTAssertNotNil (wyrażenie, komentarz) generuje błąd, jeśli wyrażenie = zero.
- XCTAssert (wyrażenie, komentarz) generuje błąd, jeśli wyrażenie == fałsz.
- XCTAssertTrue (wyrażenie, komentarz) generuje błąd, jeśli wyrażenie == fałsz.
- XCTAssertFalse (wyrażenie, komentarz) generuje błąd, jeśli wyrażenie! = Fałsz.
- XCTAssertEqualObjects (wyrażenie1, wyrażenie2, komentarz) generuje błąd, jeśli wyrażenie1 nie jest równe wyrażeniu2.
- XCTAssertEqualObjects (wyrażenie1, wyrażenie2, komentarz) generuje błąd, jeśli wyrażenie1 jest równe wyrażeniu2.
- XCTAssertNotEqual (wyrażenie1, wyrażenie2, komentarz) generuje błąd, jeśli wyrażenie1 == wyrażenie2.
- XCTAssertEqual (wyrażenie1, wyrażenie2, komentarz) generuje błąd, jeśli wyrażenie1! = Wyrażenie2.
- XCTAssertGreaterThanOrEqual (wyrażenie1, wyrażenie2, komentarz) generuje błąd, gdy (wyrażenie1 <wyrażenie2).
Testowanie bloku kodu lub innej metody:
- Zaimportuj klasę, która zawiera metodę do przetestowania.
- Wykonaj operację na danych fikcyjnych.
- Teraz porównaj wynik operacji z oczekiwanym wynikiem.
- (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");
}
W razie potrzeby wprowadź dane manekina do testowanej metody, a następnie porównaj oczekiwane i rzeczywiste wyniki.
Testowanie asynchronicznego bloku kodu:
- (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];
}
- W razie potrzeby wprowadź dane manekina do testowanej metody.
- Test zatrzyma się tutaj, uruchamiając pętlę uruchamiania, aż do przekroczenia limitu czasu lub spełnienia wszystkich oczekiwań.
- Limit czasu to oczekiwany czas odpowiedzi bloku asynchronicznego.
Pomiar wydajności bloku kodu:
1. W przypadku metod synchronicznych:
- (void)testPerformanceReverseString {
NSString *originalString = @"hi_my_name_is_siddharth";
[self measureBlock:^{
[self.someObject reverseString:originalString];
}];
}
2. W przypadku metod asynchronicznych:
- (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) {
}];
}];
}
- Ten blok pomiaru wydajności jest wykonywany 10 razy pod rząd, a następnie obliczana jest średnia, i na podstawie tego średniego wyniku wydajności tworzony jest poziom wyjściowy, który jest akceptowany do dalszej oceny.
- Wynik wydajności jest porównywany z poprzednimi wynikami testu i poziomem bazowym z dostosowywalnym maksymalnym odchyleniem standardowym.
Uruchamianie kombinezonów testowych:
Uruchom wszystkie testy, wybierając Produkt> Test. Kliknij ikonę Test Navigator, aby wyświetlić status i wyniki testów. Możesz dodać cel testowy do projektu (lub dodać klasę do testu), klikając przycisk Dodaj (plus) w lewym dolnym rogu nawigatora testu. Aby wyświetlić kod źródłowy dla konkretnego testu, wybierz go z listy testów. Plik zostanie otwarty w edytorze kodu źródłowego.
Uwaga:
Upewnij się, że pole wyboru Uwzględnij przypadek testu jednostkowego jest zaznaczone podczas tworzenia nowego projektu, jak pokazano poniżej: