Модульные тесты iPhone зависают; Не удалось вызвать -applicationDidFinishLaunching: - PullRequest
2 голосов
/ 10 февраля 2009

У меня настроены модульные тесты для моего проекта iPhone, созданного с использованием Google Toolkit для Mac , поверх OCUnit. У меня есть зависимый проект под названием «Модульные тесты», который создает и запускает тесты по мере необходимости.

Но потом все перестало работать, без причины, которую я могу понять. Внезапно мой исполняемый файл "Unit Tests" запускается и просто сидит там, ожидая, навсегда. Он никогда не заходит так далеко, как метод Application Delegate -applicationDidFinishLaunching:, который вызывает фактические модульные тесты. Вставка NSLog в метод делегата -init говорит мне, что этот метод вызывается, но приложение никогда не "заканчивает" запуск.

Если я изменю сценарий оболочки, который запускает исполняемый файл «Модульные тесты», и извлекаю аргумент -RegisterForSystemEvents, исполняемый файл существует немедленно (он не запускает тесты) и выдает мне следующее сообщение:

Завершение, поскольку нет сервера системных событий.
(Запустите EventPump или передайте аргумент «-RegisterForSystemEvents», если вы хотите запустить без SpringBoard.

Так как он прекращается, когда я удаляю этот аргумент, мне любопытно, что именно этот аргумент делает и как, так как это может вызвать зависание. Но так как никакие тесты не запускаются без него, мне нужно определить, как я могу заставить его работать снова. Однако Google не предоставляет ссылок на что-либо, имеющее отношение к текущей ситуации, и ничего в документации для разработчиков не поможет.

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 24 августа 2009

Если Xcode зависает во время сборки (окно результатов сборки показывает «Выполнение пользовательского сценария оболочки», но останавливается там), выберите цель модульного теста и нажмите «Получить информацию». Затем выберите вкладку «Свойства», очистите текстовое поле «Основной файл пера» и очистите цель.

Нажатие «Build and Go» теперь должно успешно запускать тесты.

1 голос
/ 01 июля 2010

Мы исправили эту проблему с утра. Вершина дерева GTM больше не должна висеть. Это связано с переключением делегата до того, как он получит событие applicationDidFinishLaunching. Подробнее в этой теме:

http://groups.google.com/group/google-toolbox-for-mac/browse_thread/thread/513a3252d655e1e3

1 голос
/ 24 февраля 2009

В случае, если кто-то еще сталкивается с этим, вот что я наконец получил работать.

Я сделал локальную копию кода, а затем вернул всю кодовую базу обратно к предыдущему коммиту в моем Git-репозитории. Эта чистая проверка все еще может нормально запускать тесты. Затем я вновь внес изменения в файл за файлом, проверяя, работают ли модульные тесты после каждого добавочного слияния.

Я ожидал, что наступит момент, когда модульные тесты провалились, но этого не произошло. Я объединил все изменения, и юнит-тесты все еще работали нормально.

Очевидно, что это не поможет тем, у кого нет системы SCM с рабочей копией, к которой можно вернуться. В этом случае наилучшим вариантом будет создание чистого проекта и перетягивание кода.

0 голосов
/ 02 июля 2011

У меня была такая же проблема - похоже, я испортил AppDelegate в IB.

Убедитесь:

  • У вас есть класс AppDelegate инстанции в NIB.

  • что его window выходное отверстие указывает на окно UI в этом NIB.

  • Это любые другие точки выхода, где они должны (в моем случае, tabBarController для моего экземпляра UITabBarController).

  • И наконец, что владелец вашего файла делегировать точки выхода на ваш AppDelegate

Уф.

...