Ответ
Да, есть опыт написания модульных (unit) и UI-тестов.
Инструменты и подходы:
- Модульные тесты: XCTest, иногда с Quick/Nimble для BDD-стиля.
- UI-тесты: XCTest с
XCUIApplicationдля автоматизации ключевых пользовательских сценариев.
Пример модульного теста для декодирования модели:
func testUserModelDecoding() throws {
// 1. Arrange (Подготовка данных)
let json = """
{
"id": 1,
"name": "John"
}
""".data(using: .utf8)!
// 2. Act (Выполнение действия)
let user = try JSONDecoder().decode(User.self, from: json)
// 3. Assert (Проверка результата)
XCTAssertEqual(user.id, 1)
XCTAssertEqual(user.name, "John")
}
Практика: Стараюсь покрывать тестами критическую бизнес-логику и сложные взаимодействия, поддерживая баланс между качеством покрытия и скоростью разработки.
Ответ 18+ 🔞
А, тесты, говоришь? Ну да, приходилось, блядь, этим заниматься, не без греха.
Чем баловался и как:
- Модульные (unit): В основном, конечно, XCTest, этот старый добрый. Бывало, для разнообразия и читаемости подключал Quick с Nimble — чтобы прям как на человеческом языке сценарии описывать, типа
it("should decode user correctly"). - UI-тесты: Тоже XCTest, но уже с этим
XCUIApplication. По сути, заставляешь приложение, как обезьяну дрессированную, по экрану тыкаться, чтобы ключевые сценарии проверить: залогиниться, покупку оформить — всё это безобразие.
Вот, смотри, как обычно модульный тест на коленке клепается, на примере декодирования какой-нибудь модели:
func testUserModelDecoding() throws {
// 1. Arrange (Готовим почву, блядь)
let json = """
{
"id": 1,
"name": "John"
}
""".data(using: .utf8)!
// 2. Act (Делаем самое интересное)
let user = try JSONDecoder().decode(User.self, from: json)
// 3. Assert (А теперь проверяем, не обосрались ли мы)
XCTAssertEqual(user.id, 1)
XCTAssertEqual(user.name, "John")
}
А по жизни как? Стараюсь, конечно, не ебать себе мозг попытками покрыть каждую строчку кода — это путь в никуда, чистая профанация. Бью по самому больному: критическая бизнес-логика, эти ваши сложные взаимодействия между сервисами, где один чих — и всё, пиздец. Главное — найти баланс, чтобы и качество было, и чтобы тесты сами по себе не превращались в отдельный адский проект на поддержку.