Objective-C Language
Test delle unità usando Xcode
Ricerca…
Osservazioni
Dipendenze :
- Se l'applicazione utilizza librerie di terze parti o cialde di cacao, queste librerie o pod devono essere installate anche per il test.
- La classe di test (Test Suit) estende XCTestCase.
Get brushed up prima di iniziare:
Tutte le classi di test hanno due metodi in setUp e tearDown comuni.
setUp viene eseguito prima di ogni testcase e tearDown dopo ogni testcase.
I casi di test vengono eseguiti in ordine alfabetico.
In Test Driven Development, è bene creare prima i dati del test fittizio.
I metodi del test case iniziano con la parola chiave "test".
I metodi di test non accettano parametri e non restituiscono alcun valore.
Appendice:
Esistono diversi altri metodi per confrontare il risultato atteso e il risultato effettivo di un'operazione. Alcuni di questi metodi sono elencati di seguito:
- XCTAssertNil (espressione, commento) genera un errore se espressione! = Nil.
- XCTAssertNotNil (espressione, commento) genera un errore se espressione = nil.
- XCTAssert (espressione, commento) genera un errore se espressione == false.
- XCTAssertTrue (espressione, commento) genera un errore se espressione == false.
- XCTAssertFalse (espressione, commento) genera un errore se espressione! = Falso.
- XCTAssertEqualObjects (espressione1, espressione2, commento) genera un errore se expression1 non è uguale a expression2.
- XCTAssertEqualObjects (espressione1, espressione2, commento) genera un errore se expression1 è uguale a expression2.
- XCTAssertNotEqual (espressione1, espressione2, commento) genera un errore se espressione1 == espressione2.
- XCTAssertEqual (espressione1, espressione2, commento) genera un errore se espressione1! = Espressione2.
- XCTAssertGreaterThanOrEqual (espressione1, espressione2, commento) genera un errore quando (espressione1 <espressione2).
Test di un blocco di codice o di un metodo:
- Importa la classe, che contiene il metodo da testare.
- Eseguire l'operazione con dati fittizi.
- Ora confronta il risultato dell'operazione con il risultato previsto.
- (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");
}
Alimenta i dati fittizi sul metodo sotto test, se necessario, quindi confronta i risultati attesi e quelli effettivi.
Test del blocco di codice asincrono:
- (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];
}
- Alimentare i dati fittizi sul metodo sotto test, se necessario.
- Il test si fermerà qui, eseguendo il ciclo di esecuzione, fino a quando non verrà raggiunto il timeout o tutte le aspettative saranno soddisfatte.
- Il timeout è il tempo previsto per il blocco asincrono per la risposta.
Misurazione delle prestazioni di un blocco di codice:
1. Per i metodi sincroni:
- (void)testPerformanceReverseString {
NSString *originalString = @"hi_my_name_is_siddharth";
[self measureBlock:^{
[self.someObject reverseString:originalString];
}];
}
2. Per i metodi asincroni:
- (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) {
}];
}];
}
- Questo blocco di misurazione delle prestazioni viene eseguito per 10 volte consecutivamente e quindi viene calcolata la media e sulla base di questo risultato di prestazioni medie viene creato e viene accettata la baseline per un'ulteriore valutazione.
- Il risultato della prestazione viene confrontato con i precedenti risultati del test e la linea di base con una deviazione standard massima personalizzabile.
Esecuzione di test di prova:
Esegui tutti i test scegliendo Prodotto> Test. Fare clic sull'icona Test Navigator per visualizzare lo stato e i risultati dei test. È possibile aggiungere un target di test a un progetto (o aggiungere una classe a un test) facendo clic sul pulsante Aggiungi (più) nell'angolo in basso a sinistra del navigatore di test. Per visualizzare il codice sorgente per un particolare test, selezionarlo dall'elenco di test. Il file si apre nell'editor del codice sorgente.
Nota:
Assicurati di includere la casella di verifica dell'unità di test unitaria quando crei un nuovo progetto come mostrato di seguito: