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