iPhone SenTestingKit не может найти AppDelegate в цели UnitTestBundle - PullRequest
3 голосов
/ 07 июля 2010

Я пытаюсь настроить свое модульное тестирование для приложения iPhone, используя XCode 3.2.3.

Я следовал инструкциям в http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html

Как можно ближе, ноЯ получаю это сообщение об ошибке при попытке построить: "((yourApplicationDelegate)! = Nil)" должно быть истинным.UIApplication не удалось найти AppDelegate

(этот тривиальный тест по умолчанию для USE APPLICATION UNIT TEST верен)

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

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

перепутаны

-

Я включил исходные файлы в свой проект, и он прекрасно компилируется, но все равно испытывает ту же ошибку модульного теста:

"((yourApplicationDelegate)! = Nil)" должно быть true.UIApplication не удалось найти AppDelegate

Исходный код совпадает с кодом шаблона:

-(void) testAppDelegate {

    id yourApplicationDelegate = [[UIApplication sharedApplication] delegate];
    STAssertNotNil(yourApplicationDelegate, @"UIApplication failed to find the AppDelegate");
}

Ответы [ 5 ]

10 голосов
/ 08 апреля 2011

Убедитесь, что заданы параметры сборки BUNDLE_LOADER и TEST_HOST для пакета модульного теста.

BUNDLE_LOADER = $(BUILT_PRODUCTS_DIR)/YourApp.app/YourApp
TEST_HOST = $(BUNDLE_LOADER)

Кроме того, в Xcode4 многие шаги, описанные в руководстве Apple, не нужны (например, дублирование цели приложения),Я рекомендую создать новый проект, включая юнит-тестирование и осмотреться.

1 голос
/ 16 ноября 2011

Я дважды ошибся в этом. Вам нужно настроить параметры сборки BUNDLE_LOADER и TEST_HOST, чтобы это работало. Но этого недостаточно, нужно также установить Bundle Loader и Test Host. Пожалуйста, отметьте , как реализовать тесты приложений в xcode4? , этот ответ работал отлично для меня.

1 голос
/ 09 декабря 2010

Это для OP, если проблема не устранена и остается актуальной, и для браузеров форума:

Я тоже следовал рекомендациям в руководстве по разработке iOS для тестирования модулей и приложений.Я тоже, следуя руководству по тестированию приложений, столкнулся с проблемой:

Test Suite 'FirstSuite' started at 2010-12-08 21:30:33 GMT 0000
Test Case '-[FirstSuite testAppDelegate]' started.
/Users/TomCruise/Documents/iPhoneDevelopment/PickerLeak/FirstSuite.m:22: error:-[FirstSuite testAppDelegate] : "((app_delegate) != nil)" should be true. Cannot find the application delegate.
Test Case '-[FirstSuite testAppDelegate]' failed (0.000 seconds).

Т.е. делегат приложения не был найден, как ожидалось.

Проблема возникла, когда я подумалЯ следовал инструкциям, я не сделал.Судя по всему, тестирование приложения выполняется только на устройстве.Поэтому я переключился с Симулятора на Устройство (для цели AppTesting), подключил свой iPhone, а затем сделал Build + Run (cmd + return / enter).Приложение установилось само по себе, и через несколько секунд вышло с кодом возврата 1 (который, я думаю, означает неправильный код возврата).

После выхода из приложения я сделал shift + cmd + R, (uparrow + cmd+ R), чтобы получить подсказку журнала, и мог прочитать следующее:

2010-12-08 22:59:59.163 PickerLeak[5356:307] -[UIPickerView setFrame:]: invalid height value 200.0 pinned to 180.0 
Test Suite 'All tests' started at 2010-12-08 22:00:00 GMT 0000
Test Suite '/var/mobile/Applications/{number}/PickerLeak.app/PickerLeakTests.octest(Tests)' started at 2010-12-08 22:00:00 GMT 0000
Test Suite 'FirstSuite' started at 2010-12-08 22:00:00 GMT 0000
**Test Case '-[FirstSuite testAppDelegate]' started.
Test Case '-[FirstSuite testAppDelegate]' passed (0.001 seconds).**
Test Case '-[FirstSuite testFail]' started.
/Users/TomCruise/Documents/iPhoneDevelopment/PickerLeak/FirstSuite.m:17: error: -[FirstSuite testFail] : Must... fail.
Test Case '-[FirstSuite testFail]' failed (0.003 seconds).
Test Suite 'FirstSuite' finished at 2010-12-08 22:00:00 GMT 0000.
Executed 2 tests, with 1 failure (0 unexpected) in 0.004 (0.008) seconds

Итак ... Ура!:)

Godspeed, разработчики.

0 голосов
/ 07 декабря 2010

Согласно документации Apple, существует 2 вида модульных тестов.

  • логические тесты
  • тесты приложений

Тесты приложений работают толькона аппаратном устройстве.Если вы используете симулятор, он не будет работать.

Смотрите это: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html

0 голосов
/ 13 ноября 2010

Я не могу напрямую ответить на ваш вопрос, потому что у меня также никогда не было тестов приложений для работы с OCUnit.Я понимаю, что многие люди используют библиотеку Google Toolbox для Mac для iPhone или GHUnit, чтобы упростить эту задачу.

Как отмечается выше в сообщении Blazing Cloud, OCUnit (и GTM / GHUnit) более JUnitстиль, чем Rspec-стиль.В Pivotal мы используем Rspec практически для всего, и мы хотели что-то подобное для Objective C. Итак, мы написали Cedar , и мы специально разработали его для работы с UIKit, запуска на устройствах iOS и т. Д. Он доступен бесплатнои с открытым исходным кодом;если у вас есть какие-либо вопросы по этому поводу, вы можете отправить дискуссионную группу по электронной почте: cedar-discuss@googlegroups.com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...