Objective-C Language
Модульное тестирование с использованием Xcode
Поиск…
замечания
Зависимости :
- Если приложение использует сторонние библиотеки или контейнеры для какао, то эти библиотеки или контейнеры необходимы для установки для тестирования.
- Класс тестирования (Test Suit) расширяет XCTestCase.
Перед тем, как начать:
Все тестовые классы имеют два общих метода setUp & tearDown.
setUp запускается до каждого теста и отрыжка после каждого теста.
Тесты выполняются в алфавитном порядке.
В Test Driven Development полезно сначала создать фиктивные тестовые данные.
Методы тестовых примеров начинаются с ключевого слова «тест».
Методы испытаний не принимают никаких параметров и не возвращают значения.
Приложение:
Существует несколько других методов сравнения ожидаемого результата и фактического результата из операции. Некоторые из этих методов перечислены ниже:
- XCTAssertNil (выражение, комментарий) генерирует сбой, если выражение! = Nil.
- XCTAssertNotNil (выражение, комментарий) генерирует сбой, если выражение = nil.
- XCTAssert (выражение, комментарий) генерирует сбой, если выражение == false.
- XCTAssertTrue (выражение, комментарий) генерирует сбой, если выражение == false.
- XCTAssertFalse (выражение, комментарий) генерирует сбой, если выражение! = False.
- XCTAssertEqualObjects (выражение1, выражение2, комментарий) генерирует сбой, если выражение1 не равно выражению2.
- XCTAssertEqualObjects (выражение1, выражение2, комментарий) генерирует сбой, если выражение1 равно выражению2.
- XCTAssertNotEqual (выражение1, выражение2, комментарий) генерирует сбой, если выражение1 == expression2.
- XCTAssertEqual (выражение1, выражение2, комментарий) генерирует сбой, если выражение1! = Выражение2.
- XCTAssertGreaterThanOrEqual (выражение1, выражение2, комментарий) генерирует сбой, когда (выражение1 <выражение2).
Тестирование блока кода или какого-либо метода:
- Импортируйте класс, который содержит метод для тестирования.
- Выполните операцию с фиктивными данными.
- Теперь сравните результат операции с ожидаемым результатом.
- (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");
}
При необходимости отправьте фиктивные данные тестируемому методу, а затем сравните ожидаемые и фактические результаты.
Тестирование асинхронного блока кода:
- (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];
}
- При необходимости отправьте фиктивные данные тестируемому методу.
- Тест остановится здесь, запустив цикл выполнения, пока не будет достигнут тайм-аут или все ожидания не будут выполнены.
- Тайм-аут - это ожидаемое время для асинхронного блока для ответа.
Измерение производительности блока кода:
1. Для синхронных методов:
- (void)testPerformanceReverseString {
NSString *originalString = @"hi_my_name_is_siddharth";
[self measureBlock:^{
[self.someObject reverseString:originalString];
}];
}
2. Для асинхронных методов:
- (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) {
}];
}];
}
- Этот блок измерения эффективности выполняется в 10 раз подряд, затем вычисляется среднее значение, и на основе этого среднего результата производительности создается, а базовая линия принимается для дальнейшей оценки.
- Результат производительности сравнивается с предыдущими результатами тестирования и базовым уровнем с настраиваемым максимальным стандартным отклонением.
Запуск тестовых костюмов:
Запустите все тесты, выбрав «Продукт»> «Тест». Нажмите значок Test Navigator, чтобы просмотреть состояние и результаты тестов. Вы можете добавить тестовую цель в проект (или добавить класс к тесту), нажав кнопку «Добавить» (плюс) в нижнем левом углу тестового навигатора. Чтобы просмотреть исходный код для конкретного теста, выберите его в списке тестов. Файл открывается в редакторе исходного кода.
Замечания:
Убедитесь, что при создании нового проекта проверяется, что блок блока проверки блока установлен, как показано ниже: