Pull to refresh

Comments 28

Хотелось бы увидеть примеры из реальной жизни — совершенно не понятно зачем тестировать сложение чисел.
Вот к примеру сейчас занимаюсь разработкой одного приложения и не могу даже представить, куда это TDD можно вообще там приткнуть.
Эта статья написана для новичков которые уже решили, что хотят идти путем TDD. В статье я лишь помогаю делать самые первые шаги, что может быть элементарнее сложения чисел. Я не знаю какое приложение вы разрабатываете, поэтому не могу сказать куда вы можете воткнуть там TDD, может в вашем случае полезно пойти другим путем.
идти путем TDD

ну, не только для этого полезно :) для себя лично считаю TDD (в его классическом подходе — сначала тесты, потом реализация методов) излишне «далеко планируемым», но использую юнит-тесты как годную альтернативу рутинному тестированию (собственно, тот же TDD, только вид сбоку), с тем, чтобы убедиться в том, что новые изменения не сломали ранее отлаженных частей.
Вы меня не поняли. Я имел ввиду то, что было бы хорошо отразить в следующей статье реальное практическое применение юнит-тестов, ведь на Hello-World новичку далеко не уехать.
Именно в этом направлении я и собираюсь двигаться, но начинать то с чего то надо. Меня инетересует мнение читателей, о чем писать дальше.
Ну банально, как оттестировать ViewController какой-нибудь?
На ваш вопрос могу только один ответ дать — «42»

Что конкретно оттестировать?
Ну что является основным продуктом программирования под iOS, например? Небольшая модель, и много ViewController'ов. Методы, которые скрывают и показывают элементы интерфейса, дергают другие функции (уже на моделях) и т.д… Как mock'ать объекты, как разобраться с тем, что структура view такая, как мне нужна, и т.д.? Как покрыть этот код хотя бы на 90%.
Хорошо, я подумаю какой пример можно придумать.
присоединяюсь, очень интересно как протестировать интерфейсные элементы.
Вам нужны UI Automation tests.
Первым делом попробуйте стандартное решение, предлагаемое Apple в Instruments (template Automation). Если захочется CI – обратите внимание на Frank или Calabash.
Прекрасное введение в юнит-тесты в xcode. Спасибо. Таки юнит тесты удобная штука. Мне кажется, не помешал бы обзор assert'ов — пусть документация по ним и гуглится на раз-два, но вдруг там есть какие-нибудь тонкости использования.

Ну а в целом было бы интересно почитать особенности внедрения юнит тестирования для объектов посложнее — там использование фейковых заглушек (mock'ов) и пр в применении к разработке для мобильных устройств.
Могу сделать урок про создание заглушки для работы с сетью, что бы можно было отработать работу приложения с не валидными данными. Помогите только определится будет ли он кому то интересен.
Я бы почитал…
С удовольствием обучусь. А то все NSLog() да NSLog()…
Думаю вам уже стоит начинать писать!
> мне надоело, что исправление багов занимает у меня больше времени, чем разработка
> предпочитаю не использовать ARC

Кажется я знаю, с чем связана первая проблема…
Намек ваш понял, но тут вас огорчу, исправление багов у меня имеет мало общего с утечками памяти. Скорее когда новый функционал дописываешь незаметно отваливается какой-то старый, вот это отследить я и пытаюсь. Только вот говорить что плохая архитектура изначально не надо. Разрабатываем приложения мы в реальном мире, и финты ушами от заказчиков вещь довольно частая.
По опыту большинство багов — это именно неправильное использование фреймворков (тот-же UIKit), именно в UI части. И вот если вы покажите как использовать Unit-тесты для тестирования не модели, а контроллера, или вью под ios — это будет горазд гораздо ценнее.
Можете как то развернуть вопрос, я не понял в чем он заключается.
как покрыть код, содержащий блоки, юнит тестами
В чем конкретно проблема, что делается такого страшного в блоках? Вы имеете в виду, что у вас вас в блоках происходят какие-то действия и вы хотите покрыть тестами как эти действия выполняются или что?
Хотелось бы понять границу применимости unit тестов. Тут отметили, есть уже готовые инструменты от Apple для автоматизированного тестирования UI в Instruments (UI Automation tests). Было бы круто услышать чем нужно тестировать интерфейс(например, как можно автоматически, за раз протестировать перемещение по всем вью контроллерам и нажатие всех кнопок, мультитачи, смену ориентации), чем дату, чем связи между классами и т.д.
Дело в том, что в основном интерфейсы у меня рисуются через OpenGL и со стандартными элементами я знаком плохо.
ARC — довольно топорная технология автоматической подстановки retain/release/autorelease при компиляции с парой интересных (но совершенно непринципиальных) оптимизаций, никакой черной магии. Не знаю, чему там нужно «полежать», все прекрасно работает и избавляет от кучи потенциальных проблем (заметьте, я не говорю, что знать как оно работает под капотом не нужно, наоборот, очень даже нужно). Опять же, при наличии ARC есть автоматически обнуляемые weak-ссылки.
Тестирование классов выполняющих асинхронные действия и тестирование объектов связанных с NSURLRequest, без подключения к интернету
Sign up to leave a comment.

Articles