Я впервые пытаюсь использовать OCMock в своих тестовых примерах. Это проект для Mac, созданный и предназначенный для Lion в Xcode 4.3. В основном приложении и в тестовом пакете ARC включен, поэтому каждый раз, когда я выполняю тесты, я вижу следующее сообщение в журнале:
GC: принудительное выключение GC, поскольку установлен OBJC_DISABLE_GC.
Это нормально, так как я использую ARC, поэтому меня не волнует GC. Когда я создаю свои модульные тесты, связанные с последней стабильной версией OCMock (2.0.1), в сборке нет проблем. Во время выполнения после приведенного выше оператора журнала я получаю следующее:
Пакет тестов в /Users/___/Library/Developer/Xcode/DerivedData/___-ayizwpehemunvodsdvczckkvarsh/Build/Products/Debug/___Tests.octest не может быть загружен, потому что его информация о времени выполнения Objective-C не соответствует информации о времени выполнения, необходимой для тестовой установки. Вероятно, это связано с тем, что тестовая установка запускается с отключенной сборкой мусора Objective-C, но для тестового пакета требуется сборка мусора Objective-C. Чтобы включить сборку мусора Objective-C для тестовой установки, запустите ее в среде без переменной среды OBJC_DISABLE_GC.
2012-03-06 10:29:32.812 otest[8486:203] *** NSTask: создание задачи для пути '/Users/___/Library/Developer/Xcode/DerivedData/___-ayizwpehemunvodsdvczckkvarsh/Build/Products/Debug/___Tests .octest/Contents/MacOS/___Тест не пройден: 22, «Неверный аргумент».Завершение временного процесса.
Сообщение подразумевает, что сборка мусора является наиболее распространенной причиной, но, как уже упоминалось, я никоим образом не использую сборщик мусора. Итак, какие еще настройки могут мешать мне во время выполнения? Я не думал, что делаю что-то нетипичное, и я просмотрел настройки своего тестового проекта, чтобы быть уверенным, и не увидел ничего странного.
Обновление
Мне удалось воспроизвести это с новым пустым проектом.
Test Host
в настройках сборки пакета модульных тестов.. Кроме того, когда я отключаю ARC и делаю сборку мусора Required, затем clang
сообщает об ошибке компоновщика mach-o, поэтому сборка не проходит. Если я удалю ссылку на фреймворк OCMock, он будет работать нормально. Это подтверждает мою первоначальную мысль о том, что проблема заключается не в сборке мусора, а в чем-то другом.