Xcode 5.0.2でプロジェクトの実行に問題があります
次のエラーが表示されます。
dyld: Library not loaded: @rpath/XCTest.framework/Versions/A/XCTest
Referenced from: /Users/chris/Library/Developer/Xcode/DerivedData/relatio-cwlmozvklaldmictbbjthzuoxnxz/Build/Products/Debug/relatio.app/Contents/MacOS/relatio
理由:画像が見つかりません(lldb)
この問題を解決するにはどうすればよいですか?
メインターゲットがテストターゲットと同様にXCTest.frameworkにリンクしているようです。メインターゲットのみにリンクする必要があります。
1)プロジェクト設定に移動
2)アプリのメインターゲットに移動->他のリンカーフラグ
3) '-framework XCTest'を削除します
4)テストターゲットの「その他のリンカーフラグ」フィールドに「-framework XCTest」が含まれていることを確認してください
ターゲットの1つをテストターゲットに変更すると、このエラーが発生しました。他の回答を読んだ後、ビルドフェーズ>ソースのコンパイルコンパイルソースとしてテストクラスを含むであり、XCTestフレームワークをインポートしようとした非テストターゲットに気付きました。
私の場合、通常のターゲットのコンパイルソースからテストクラスを削除することでこれを解決しました。
ここでの問題は、投稿したdyldエラーメッセージによると、applicationがXCTest.frameworkにリンクしていることです。それは間違っています。テストバンドルのみにテストが含まれているため、テストバンドルのみがXCTest.frameworkに対してリンクする必要があります。
OCMockライブラリで同様の問題が発生しましたが、解決策は次のとおりです。
target :"Application Tests", :exclusive => true do
pod 'OCMock'
end
これは私が問題を解決した方法です:
私のメインのターゲットの「ライブラリとバイナリをリンク」(ビルドフェーズの下)で、問題を引き起こしていたのは私が使用していたテストフレームワーク(Nimble.framework)でした。それを削除し、すべてが大丈夫です!
フレームワーク検索パスでフレームワークの参照を入力し、「ビルド設定」の下でパス検索パスを実行します
このケースでは、アプリのターゲットとテストのターゲットの両方にMockingjay
を使用します
target 'MyProject' do
pod 'Mockingjay/Core'
# all pods that are not test go here
target 'MyProjectTest' do
inherit! :search_paths
pod 'Mockingjay/XCTest'
pod 'Quick', ' ~> 0.9.2'
# .. all test pods go here
end
end
私が同じ問題を抱えているのは、新しいファイルをフレームワークに追加するからです。したがって、単に「pod install
"は私の問題を解決しました。しかし、ポッドもTests
ターゲットの下にあることを確認してください。