Xcode — отладка цели модульного теста

Я пишу тесты для своего приложения для iPhone, используя OCUnit. Есть ли способ отлаживать модульные тесты и иметь точку останова, чтобы увидеть, что, черт возьми, происходит?

Невероятно сложно писать модульные тесты, не имея возможности использовать точки останова.


person aryaxt    schedule 06.04.2011    source источник
comment
+1 это было злом для XCode3, рад, что кто-то спрашивает.   -  person Nick Weaver    schedule 06.05.2011


Ответы (5)


ссылка, размещенная Дэвидом Гелхаром, верна для Xcode 3.

Для Xcode 4 все намного проще. Отредактируйте текущую схему и перейдите к действию «Проверить». Нажмите «+» внизу и добавьте пакет тестов, содержащий тесты, которые вы хотите запустить. Теперь, когда вы выбираете «Продукт» -> «Тест», он запускает эти тесты. Любые активные точки останова будут срабатывать, как и следовало ожидать.

person BJ Homer    schedule 07.04.2011
comment
Отлично, я установил xcode 4, и все, что мне нужно было сделать, это Product-›Test - person aryaxt; 07.04.2011
comment
+1 Спасибо за ответ, хороший повод перейти на XCode4. - person Nick Weaver; 06.05.2011
comment
Я хочу, чтобы это сработало для меня. Я использую Xcode 4, точки останова включены, большой переключатель для точек останова включен в схеме, и у меня есть точка останова как в классе тестирования, так и в классе, который я хочу протестировать, и он пропускает мимо, как ни один из эти вещи имеют значение. Разница может заключаться в том, что я пытаюсь проводить логические тесты, а не тесты приложений. - person Hack Saw; 02.09.2011
comment
Он должен работать как для логических тестов, так и для тестов приложений; похоже, что-то еще не так с вашей настройкой. Извиняюсь! - person BJ Homer; 02.09.2011
comment
У меня та же проблема, что и с ножовкой. @BJHomer, должно работать довольно мягко. Означает ли это, что точки останова работают для вас в логических тестах? Или что вы предполагаете, что они должны работать, но не проверили? - person toolbear; 23.02.2012
comment
Точки останова @toolbear работают для меня как в логических тестах, так и в тестах приложений. Я использую их ежедневно на работе. - person BJ Homer; 23.02.2012
comment
Я была такая же проблема. Ответ @Daniel Sproul ниже сделал свое дело. - person Max MacLeod; 10.09.2012

Используя XCode 4.2 (с модульными тестами SenTestKit, установленными путем установки флажка «Включить модульные тесты» при настройке проекта), Product- > Test не достигал моих точек останова, но Product- > Выполнить действие- > Тестировать без сборки кажется, делает свое дело. Надеюсь это поможет.

person Daniel Sproul    schedule 01.01.2012
comment
Это не начало работать для меня, пока я не установил флажок «Использовать аргументы и переменные среды действия «Выполнить» на вкладке «Аргументы» в разделе «Тест» схемы, которая создает мой проект. - person Jim Hayes; 02.07.2012
comment
Убедитесь, что у вас отключен тест после сборки в настройках сборки для вашего целевого объекта модульного тестирования. - person mamills; 13.06.2013

Вот сообщение в блоге: Отладка модульных тестов приложения Cocoa с инструкциями о том, как это сделать (для XCode 3 по крайней мере; не уверен насчет XCode 4).

person David Gelhar    schedule 07.04.2011

Еще один элемент, на который следует обратить внимание в XCode 4, заключается в том, что вы не добавили тестируемые классы в цель модульного теста, а также в основной проект. Похоже, что в этом нет необходимости, и это испортит вашу способность сбивать точки останова.

Подсказкой будут предупреждающие сообщения в журнале отладки при запуске. Сообщения будут выглядеть так:

«Класс XXX реализован как в YYY, так и в ZZZ. Будет использоваться один из двух. Какой из них не определен».

Как только я удалил классы, отмеченные в предупреждениях, из цели модульного теста, Xcode начал сталкиваться с точками останова.

Вы можете удалить классы из цели, щелкнув файл .M и отключив его членство в цели модульного теста в окне инспектора в разделе «Принадлежность к цели».

person Matt__C    schedule 24.05.2011
comment
Я также заметил некоторое странное поведение с переменными-членами, которые не оставались установленными, и т. д., которые исчезли, когда я исправил цели. - person Matt__C; 24.05.2011

Возможно, вы также случайно отключили параметр «Отладчик: исполняемый файл отладки» в «Схема» -> «Тест» -> «Информация».

введите здесь описание изображения

person Oleksii Nezhyborets    schedule 07.02.2020