Ответ
Да, активно использовал XCTest для модульного тестирования (Unit Testing).
Что тестировал:
- Модели данных: Валидация, преобразования форматов, бизнес-правила.
- Бизнес-логика: Сервисы, утилиты, менеджеры.
- ViewModel/Presenter: Проверка корректности выходных состояний на основе входных данных и действий.
Пример теста для валидатора email:
import XCTest
@testable import MyApp
class EmailValidatorTests: XCTestCase {
func testValidEmail() {
let validator = EmailValidator()
XCTAssertTrue(validator.isValid("user@example.com"))
}
func testInvalidEmail() {
let validator = EmailValidator()
XCTAssertFalse(validator.isValid("invalid-email"))
}
func testEmptyEmail() {
let validator = EmailValidator()
XCTAssertFalse(validator.isValid(""))
}
}
Практики:
- Мокирование: Использовал протоколы для создания mock-объектов зависимостей.
- Асинхронность: Применял
XCTestExpectationдля тестирования асинхронного кода. - Покрытие: Стремился к покрытию ключевой логики на уровне 60-80%.