テストケースで初めてOCMockを使用しようとしています。これはXcode 4.3で作成され、LionをターゲットにしたMacプロジェクトです。メインアプリとテストバンドルは、両方の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を使用している方法はありません。だから、実行時に私を台無しにするかもしれない他の設定は何ですか?私は非典型的なことをしているとは思わなかったし、テストプロジェクトの設定を見て、奇妙なことは見ていなかった。
更新
私は、新しい空のプロジェクトでこれを再現することができました。
- は、新しいプロジェクトを作成し、それはユニットテストを作成している、ARCは
- クリアOCMockフレームワーク
- から
- リンクテストを実行し、ユニットテストバンドルのビルド設定から
Test Host
設定を有効にして、私はARCをオフにしてから、ガベージコレクションが必須を作る また
、上に報告された同じエラーを目撃はmach-oリンカエラーを報告するため、ビルドは成功しません。 OCMockフレームワークへのリンクを削除すると、うまく構築されます。これは、ガベージコレクション以外の場所に問題があるという私の最初の考えを支持しています。
いつものようにテストを実行し、位相用のファイルのリストにプロジェクトのアウトラインからのフレームワーク
@vakio "テストバンドル"は私自身のテストコードで、ARCを使用しています。これがGCが無効になっている理由です。このメッセージは、通常は実行時環境で間違っていることを示唆しています。私はGCを有効にしようとしましたが、おそらくARCとGCが共存できないため、LLVMが失敗します。 – Dov