Pull to refresh

Comments 5

Не хочу показаться вечно недовольным занудой, но в интернете полно примеров, как протестировать код сложения чисел, конкатенации или разворота строк, вычисления факториалов и чисел Фибоначи и тому подобных элементарных вещей. Хотелось бы посмотреть на более приближенный к реальности пример юниттеста. Например, тест для кода который будет использоватся для работы с вебсирвисом и DB, с изоляцией от этих внешних сущностей при помощи OCMock. У автора нет в планах такой статьи?
Это только введение в OCUnit, причем, далеко не полное. На Хабре эта тема еще не поднималась, поэтому решил затронуть. Конечно, по мере возможности, буду публиковать примеры еще, уже без вступлений.
Внимание, не наступите на «стандартные» грабли!

Если вы где-то в коде используете main bundle (вызовы [NSBundle mainBundle] или ситуации, когда при передаче nil в качестве параметра, метод использует main bundle), то скорее всего получите неожиданные ошибки, связанные с тем, что эти методы вернут bundle, стандартный для тестов — в нем нет ваших ресурсов и файлов.

В результате код типа [[NSBundle mainBundle] pathForResource:name ofType:extension] в тестах вернет nil, даже если путь и тип ресурса верны и все хорошо в самом приложении. Чтобы этого избежать, берите bundle от какого-то конкретного класса ([NSBundle bundleForClass:]). Если вы разрабатываете под iOS, то можете использовать любой класс «собственного производства», т.к. bundle для них всех все равно один.
как дебажить unit tests, созданные на основе SenTestingKit?
Последний загружает в себя наш тестовый бандл, находит там классы-наследники SenTestCase и дергает за метод setUp в начале, tearDown в конце, а между ними он вызывает все методы, название которых начинается со слова «test».


Маленькое уточнение.
setUp и tearDown вызываются до и после выполнения КАЖДОГО метода название которого начинается со слова «test»
Вот пруф:

Conveniently, you can add a pair of methods to a test suite class that are called before and after each test case method is invoked: setUp and tearDown.
Sign up to leave a comment.

Articles