最近、私は1つの古い静的ライブラリのテストケースを書き始めました。ライブラリをXcode 5にロードしました。スタティックライブラリは古いため、TestProjectをTest Targetに手動で追加する必要があります。
「製品->テスト」を実行すると、エミュレータが起動し、コンソールに次のエラーが表示されます
The test bundle at /xxx/xxx/xxx/StaticLibTest.xctest could not be
loaded because an unanticipated error occurred: Error
Domain=NSCocoaErrorDomain Code=3587 "The bundle “StaticLibTest.xctest”
couldn’t be loaded because it is damaged or missing necessary
resources."
(dlopen_preflight(/xxx/xxxx/xxx/Debug-iphonesimulator/StaticLibTest.xctest/StaticLibTests):
no suitable image found. Did find:
このエラーが発生する理由はわかりません。
正しい方向を指摘するための助けが本当にありがたいです。
自分で答えを見つけました。
ビルド設定->ライブラリとテストプロジェクトのアーキテクチャは同じである必要があります
アーキテクチャ->アーキテクチャ= Standradアーキテクチャ(armv7、armv7s、arm64)$(ARCHS_STANDARD)
テストプロジェクトのリンク-> Mach-Oタイプはバンドルである必要があります
リンク-> Mach-Oタイプ=バンドル
テストをビルドして実行します。それでおしまい
同様の問題がありました。私にとっての問題は、動的フレームワークであるがxctestバンドルにコピーされていない単体テストフレームワークでした。
解決策は、ユニットテストターゲットに「ファイルのコピー」フェーズを追加し、その宛先を「フレームワーク」に設定して、フレームワークを入力ファイルとして追加することでした。
私にとってこの問題は、「iOS展開ターゲット」のビルド設定がテストターゲットとメインアプリで異なっていることが原因でした。私がそれらを同じにしたら、問題はなくなりました。
バンドルUITestsが損傷しているか、必要なリソースがないため、バンドルをロードできませんでした。バンドルを再インストールしてみてください
すべてのターゲットが同じiOSバージョンを使用しているかどうかを確認します:ビルド設定-> iOS展開ターゲット
Podfile
にテストターゲットを追加するのを忘れたかどうかを確認します。
target 'MyProject' do
# Add test target
target 'MyProjectTests' do
inherit! :search_paths
end
pod 'SomePodLibrary'
end
テストターゲットのポッド構成をオフにすると問題が解決しましたが、ポッド構成が乱れていることが原因でした。
私にとっては、CloudKitエンタイトルメントをオンにしたばかりです。何らかの理由で建物が壊れた。
同様の問題がありました:
FrameworkAインポートFrameworkB
FrameworkA-TestsもインポートFrameworkB
問題を解決したのは、FrameworkA-Tests内のFrameworkBへのすべての参照を削除(コメント)してから、テストを1回実行し、参照のコメントを外すことでした。
FrameworkA-TestsがFrameworkBをインポートして正常に実行されるようになりました。