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