Первое: 'для того, чтобы это работало, симулятор НЕ должен уже работать'
У меня запущены тесты в терминале, и не имеет значения, включен ли симулятор.
Возможно, вам понадобятся некоторые настройки сборки: TEST_HOST
и BUNDLE_LOADER
.Я оставляю их пустыми в моем xcodeproj.
Примечание: Я также использую Hudson с отчетами о тестировании и покрытием кода.
Второе:
У меня возникли сбои в тестировании терминала и приложения с путями загрузки.Это было связано с базовой моделью данных, которая загружается из ресурса.
Решение было загрузить файл из URL-адреса вместо пути:
[[NSBundle bundleForClass:[self class]] URLForResource:....];
Я не могу гарантировать, что это связано с той же проблемойвы столкнулись с NSFileManager, но я могу только представить, что NSBundle использует NSFileManager.(Так что это может быть связано)
Третье:
Не ставьте свои тесты в зависимость от ввода-вывода.
Я считаю, что это не является целью модульного теста,Такой тест может не основываться на файловой системе, базе данных, сетевом подключении и т. Д.
Создайте класс абстракции файловой системы, который вы имитируете во время выполнения тестов.
Таким образом, ваша реализация зависит только от одного местатекущая файловая система, которую вы можете заменить во время тестирования.
Вам понадобится только один тест для проверки этой абстракции.
Резюме
- Первый из них улучшит настройку вашего теста.
- Второй, надеюсь, решит вашу тестовую проблему.
- Третий уменьшит возникновение проблемы и улучшит ваш код.
Надеюсь, это было полезно.