Я пытаюсь использовать OCMock впервые в своих тестовых случаях. Это проект Mac, построенный и ориентированный на Lion, в Xcode 4.3. Главное приложение и тестовый пакет оба ARC включены, и поэтому каждый раз, когда я выполнение тестов я вижу следующее сообщение журнала:OCMock Ошибка во время выполнения
GC: forcing GC OFF because OBJC_DISABLE_GC is set
Это хорошо, так как я использую ARC, так что я не» заботиться о GC. Когда я строю свои модульные тесты, связанные с последней стабильной версией OCMock (2.0.1), сборка не имеет проблем. Во время выполнения, после вышеуказанного журнала заявления, я получаю следующее:
The test bundle at /Users/___/Library/Developer/Xcode/DerivedData/___-ayizwpehemunvodsdvczckkvarsh/Build/Products/Debug/___Tests.octest could not be loaded because its Objective-C runtime information does not match the runtime information required by the test rig. This is likely because the test rig is being run with Objective-C garbage collection disabled, but the test bundle requires Objective-C garbage collection. To enable Objective-C garbage collection for the test rig, run it in an environment without the OBJC_DISABLE_GC environment variable. 2012-03-06 10:29:32.812 otest[8486:203] *** NSTask: Task create for path '/Users/___/Library/Developer/Xcode/DerivedData/___-ayizwpehemunvodsdvczckkvarsh/Build/Products/Debug/___Tests.octest/Contents/MacOS/___Tests' failed: 22, "Invalid argument". Terminating temporary process.
сообщение означает, что сбор мусора является наиболее распространенной причиной, но, как уже упоминалось, нет никакого способа, я использую GC. Итак, какие другие настройки могли бы запутать меня во время выполнения? Я не думал, что я делаю что-то нетипичное, и я просмотрел настройки своего тестового проекта, чтобы убедиться, и не видел ничего странного.
Update
Я был в состоянии воспроизвести это с новым пустым проектом.
- Создайте новый проект и его создание модульных тестов с поддержкой ARC
- Очистить
Test Host
настройки из настроек сборки модульного тестирования Bundle в - Ссылки на рамки OCMock
- Выполнить тесты, и свидетель ту же ошибку я сообщил выше
Кроме того, когда я отключить ARC и сделать сбор мусора Обязательный, затем clang
сообщает о ошибке компоновщика mach-o, поэтому сборка не выполняется. Если я удалю ссылку на среду OCMock, она строит отлично. Это подтверждает мою первоначальную мысль о том, что проблема лежит где-то, кроме сбора мусора.
Он говорит, что это, вероятно, не работает, потому что GC выключен. «для тестового пакета требуется сбор мусора Objective-C». Поэтому постарайтесь не устанавливать OBJC_DISABLE_GC. – vakio
@vakio «тестовый комплект» - это мой собственный тестовый код, и он использует ARC, поэтому GC отключен. Это сообщение - это всего лишь намек на то, что обычно неправильно в среде выполнения. Я попытался включить GC, но LLVM не удается, возможно, потому, что ARC и GC не могут сосуществовать. – Dov