Когда я запускаю свои тесты в XCode 5, основное окно моего приложения OS X появляется на экране в течение нескольких секунд во время выполнения тестов. Зачем? Даже если я раскомментирую все свои тесты, он все равно открывает мое главное окно.Модульное тестирование XCode 5: запускает мое приложение
ответ
Выполняется проверка приложения, а не логический тест. Это означает, что экземпляр вашего приложения будет запущен, а затем запустите модульные тесты. Это позволяет выполнить какой-либо интеграционный тест, который требует, чтобы ваше приложение было запущено.
Here является руководством по настройке тестового приложения и логического теста.
Если вы хотите изменить его к логическому тесту (так что работать быстрее и не нужно, чтобы начать свое приложение первым):
- идет строить настройки для модульного тестирования цели
- поиска
Bundle
- удалить Bundle погрузчика и Test хост
Когда я это делаю, тестовый объект не может правильно подключиться. Цель тестирования была создана XCode (с опцией New test target в тестовом навигаторе), и я не коснулся ее отдельно от нее. –
@ DanielBruce попробуйте добавить загрузчик пакетов назад –
Это было в случае с Xcode 4, может ли OP проверить, что это сработало? (Должен быть зарегистрированным разработчиком, чтобы увидеть ссылку) https://devforums.apple.com/message/867874#867874 – qnoid
Правильно, вам нужно удалить «Bundle Loader» и «Test Host» из ваших настроек сборки.
Но вы должны добавить необходимые файлы реализации в цель тестирования вашего устройства. Необходимые файлы - это то, что вы хотите использовать в своих тестовых примерах. Вам нужно сделать это, потому что в логических тестах XCode не будет компилировать все приложение. Поэтому некоторые из ваших файлов будут отсутствовать.
Это ан сообщения об ошибке, если вы опустили файл:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_Module", referenced from:
objc-class-ref in Lobic Network.o
objc-class-ref in Logic_Unit.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Вы можете добавить недостающие файлы, выбрав файл реализации и воспитывая файл инспектор. Будет раздел с названием «Целевое членство», и вы также можете установить целевое членство файлов в свой модульный тест.
Я просто потерял утро на этом.
Проект был создан в XCode 4 и использовался SenTesting.
Пробовал мигрирующие тесты на XCode 5/XCTTest
Если бы тот же вопрос - приложение побежало в тренажере и тест никогда не начинал после попытки все (переход от приложения к логическим тестам, изменение XCTest, удалить SenTesting)
отказался от создания чистого проекта XCode 5.
Добавлено все мои файлы и тесты прошли нормально.
Может все-таки есть проблемы с раскадровкой, как они были построены с XCode 4.
Радикальные, но это работает так держать его в качестве последнего средства.
С XCTest файлы приложений НЕ ДОЛЖЕН быть включен в объекты XCTest.. Комплект XCTest связан с приложением, которое делает эти файлы доступными во время выполнения.
Чтобы сделать эту работу, обеспечить опцию компилятора «символов скрыты по умолчанию» установлен в NO в пределах целевого приложения.
Вот блоге со скриншотами для ясности: http://zmcartor.github.io/code/2014/02/24/slim-xctest-targets
Преимущества этого подхода заключается в том тесты цель строит гораздо быстрее.
Я думаю, что немного стыдно, что Apple требует, чтобы у вас было компилирующее приложение до того, как любой из ваших тестов может работать ... Я бы предпочел, чтобы мои тесты имели одинаковые зависимости как мое приложение, но скомпилированное независимо от цели приложения (то есть Host Application должно быть пустым). Это возможно? – fatuhoku
Ссылка мертва, к сожалению. – Benjohn
привет, ссылка исправлена – HackaZach
На XCode5 приложение запускается. Этот ответ показывает, как изменить свой делегат при выполнении модульных тестов, чтобы он сразу же удалялся: https://stackoverflow.com/a/20588035/239408
Это для меня, по крайней мере, намного лучшее решение. Жаль, что ваш ответ здесь не был проголосован, и что этот другой вопрос не тот, который попадает в мой гуглинг! – Benjohn
Если тесты предназначены для кода, который может работать на рабочем столе и на мобильном устройстве, вы можете запускать их без симулятора или размещать их в своем приложение.
Проблема в том, что вы не можете использовать схему выбора для вашей обычной цели (настольного компьютера или iOS) для запуска теста.
Следующие работали для меня в Xcode6.
File > New Target...
Выберите комплект для тестирования какао из категории OS X.
Позаботьтесь, чтобы выбрать None
из целевого раскрывающегося списка.
Нажмите кнопку Готово. Добавьте соответствующие файлы в новую цель, как описано выше.
Теперь создайте схему для запуска теста.
Нажмите на схему выбора справа вверху и выберите New Scheme...
, щелкните раскрывающийся список и перейдите по списку к новой цели. Теперь вы можете выбрать схему из схемы chooser и использовать ⌘U для запуска тестов.
В XCode 7, удаление Host Application
не работает для меня. В действительности я использую следующее, чтобы избежать запуска приложений.
в
main.m
static bool isRunningTests() { NSDictionary* environment = [[NSProcessInfo processInfo] environment]; NSString* testEnabled = environment[@"TEST_ENABLED"]; return [testEnabled isEqualToString:@"YES"]; }
изменить основной()
int main(int argc, char * argv[]) { @autoreleasepool { if (isRunningTests()) { return UIApplicationMain(argc, argv, nil, nil); } else { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } }
- 1. Выполнение скрипта Когда XCode запускает мое приложение
- 2. Xcode 8 не запускает мое приложение
- 3. Xcode не запускает мое приложение для отладки
- 4. Модульное тестирование функции, которая запускает новый процесс
- 5. Удалить модульное тестирование из проекта Xcode?
- 6. Xcode C++ Модульное тестирование с глобальной переменной
- 7. Xcode остается на «Running», но не запускает мое приложение
- 8. Jubula не запускает мое приложение
- 9. Что запускает мое приложение C#?
- 10. Genymotion не запускает мое приложение
- 11. Запускает Valgrind, замедляет мое приложение?
- 12. Модульное тестирование с FromAsyncPattern
- 13. UIKit и модульное тестирование
- 14. Как запустить мое модульное приложение Sinatra?
- 15. Xcode 5 не устанавливает и не запускает приложение в симуляторе
- 16. Что такое модульное тестирование?
- 17. QT: имитированное модульное тестирование
- 18. Модульное тестирование MvvmCross.Droid.View
- 19. Модульное тестирование с назначенными аварий AppDelegate на XCode 7
- 20. Модульное тестирование утверждает дублирование
- 21. модульное тестирование заводского метода
- 22. Модульное тестирование - тестирование в изоляции
- 23. Тестирование интеграции или модульное тестирование?
- 24. Исследуя модульное тестирование Sails.js
- 25. Модульное тестирование Cherrypy HTTPRedirect.
- 26. CLLocationManager и модульное тестирование
- 27. модульное тестирование в торнадо
- 28. PassengerPreStart действительно не запускает мое приложение Rails3
- 29. Быстрое модульное тестирование: async
- 30. Испытательная разработка, модульное тестирование
вышеперечисленные решения здесь касаются статического изменения того, что вы создаете, чтобы исключить исполняемые биты приложения. Это может быть то, что вы хотите, но очень простым и очень эффективным альтернативным решением является запуск ваших модульных тестов ** без делегата приложений **. К сожалению, [ответ на этот вопрос] (http://stackoverflow.com/a/39142986/2547229), который предлагает этот подход, имеет только один голос на данный момент.[Другой вопрос] (http://stackoverflow.com/q/15714697/2547229) по этой теме [более высокие голосовые ответы] (http://stackoverflow.com/a/15725328/2547229) с использованием подхода делегата. – Benjohn
Я использую динамический делегат, и я поставил уточнение для обнаружения тестового прогона в [мой ответ] (http://stackoverflow.com/a/42065078/2547229). – Benjohn