Я пытаюсь использовать OCMock впервые в моих тестовых случаях.Это проект Mac, созданный и ориентированный на Lion, в Xcode 4.3.В основном приложении и комплекте тестов включен ARC, и поэтому каждый раз, когда я выполняю тесты, я вижу следующее сообщение в журнале:
GC: forcing GC OFF because OBJC_DISABLE_GC is set
Это нормально, так как яиспользуя ARC, поэтому я не забочусь о GC.Когда я собираю свои модульные тесты, связанные с последней стабильной версией OCMock (2.0.1), сборка не имеет проблем.Во время выполнения, после вышеприведенного оператора log, я получаю следующее:
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.Итак, какие другие настройки могут мешать мне во время выполнения?Я не думал, что делаю что-то нетипичное, и я посмотрел настройки своего тестового проекта, чтобы убедиться, и не увидел ничего странного.
Обновление
Мне удалось воспроизвести это с новым пустым проектом.
- Создать новый проект и создать для него модульные тесты с включенным ARC
- Очистить настройку
Test Host
из настроек сборки пакета модульных тестов - Ссылка на OCMock framework
- Выполните тесты и наблюдайте ту же ошибку, о которой я сообщал выше
Также, когда я включаювыключите ARC и выполните сборку мусора Обязательно , затем clang
сообщает об ошибке компоновщика mach-o, поэтому сборка не будет выполнена успешно.Если я удалю ссылку на фреймворк OCMock, он будет работать нормально.Это подтверждает мою первоначальную мысль о том, что проблема кроется не в сборке мусора.