Я пишу тесты для своего iPhone-приложения с помощью OCUnit. Есть ли способ отлаживать модульные тесты и иметь точку останова, чтобы узнать, что происходит?
Нелепо трудно писать модульные тесты, не имея возможности использовать контрольные точки.
Я пишу тесты для своего iPhone-приложения с помощью OCUnit. Есть ли способ отлаживать модульные тесты и иметь точку останова, чтобы узнать, что происходит?
Нелепо трудно писать модульные тесты, не имея возможности использовать контрольные точки.
Ссылка , опубликованная Дэвидом Гелхаром, верна для Xcode 3.
Для Xcode 4 все намного проще. Отредактируйте свою текущую схему и перейдите к действию "Тест". Нажмите "+" внизу и добавьте тестовый комплект, содержащий тесты, которые вы хотите запустить. Теперь, когда вы выбираете Product → Test, он будет запускать те тесты. Любые активные точки останова будут удалены так, как вы ожидали.
Использование XCode 4.2 (при тестировании модулей SenTestKit, настроенных при установке флажка "Включить модульные тесты" при настройке проекта), Product- > Test не ударил по моим точкам останова, но Product- > Perform Action- > Test Without Building, похоже, делает трюк. Надеюсь, это поможет.
Вот сообщение в блоге: Отладка Cocoa тестов модулей приложений с инструкциями о том, как это сделать (для XCode 3, по крайней мере, не уверен о XCode 4).
Еще один элемент для наблюдения в XCode 4 заключается в том, что вы не добавили тестируемые классы в Unit Test Target, а также в основной проект. Похоже, что это не обязательно, и это испортит вашу способность ударить точки останова.
Ключ будет предупреждать сообщения в журнале отладки при запуске. Сообщения будут выглядеть следующим образом:
"Класс XXX реализован как в YYY, так и в ZZZ. Будет использоваться один из двух. Какой из них - undefined."
Как только я удалил классы, отмеченные в предупреждениях из Unit Test, Xcode начал атаковать точки останова.
Вы можете удалить классы из целевого объекта, нажав на файл .M и отключив его членство в Unit Test цели в окне инспектора в разделе "Целевое членство".