web-dev-qa-db-ja.com

予期しないエラーが発生したため、テストバンドルを読み込めませんでした

最近、私は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:

このエラーが発生する理由はわかりません。

正しい方向を指摘するための助けが本当にありがたいです。

22
Brijesh Thakur

自分で答えを見つけました。

ビルド設定->ライブラリとテストプロジェクトのアーキテクチャは同じである必要があります

アーキテクチャ->アーキテクチャ= Standradアーキテクチャ(armv7、armv7s、arm64)$(ARCHS_STANDARD)

テストプロジェクトのリンク-> Mach-Oタイプはバンドルである必要があります

リンク-> Mach-Oタイプ=バンドル

テストをビルドして実行します。それでおしまい

13
Brijesh Thakur

他のリーダーがこのエラーを受け取り、Carthageを使用してフレームワークを追加している場合は、Copy FilesフェーズがDestination:Frameworksであることを確認してください。

Adding frameworks from Carthage

フレームワークを別のターゲット(フレームワーク以外)のCopy Filesフェーズ、またはCopy Bundle Resourcesに誤って追加した場合も、破損した/無効なバンドルエラーメッセージが生成されます。

26
odlp

テストターゲットのホストアプリケーションを設定することで、この問題を解決できました: Host Application

21
Menno

同様の問題がありました。私にとっての問題は、動的フレームワークであるがxctestバンドルにコピーされていない単体テストフレームワークでした。

解決策は、ユニットテストターゲットに「ファイルのコピー」フェーズを追加し、その宛先を「フレームワーク」に設定して、フレームワークを入力ファイルとして追加することでした。

21
Lukas Spieß

私にとってこの問題は、「iOS展開ターゲット」のビルド設定がテストターゲットとメインアプリで異なっていることが原因でした。私がそれらを同じにしたら、問題はなくなりました。

12
Liron Yahdav

バンドルUITestsが損傷しているか、必要なリソースがないため、バンドルをロードできませんでした。バンドルを再インストールしてみてください

すべてのターゲットが同じiOSバージョンを使用しているかどうかを確認します:ビルド設定-> iOS展開ターゲット

2
Narlei Moreira

Podfileにテストターゲットを追加するのを忘れたかどうかを確認します。

target 'MyProject' do

  # Add test target
  target 'MyProjectTests' do
    inherit! :search_paths
  end

  pod 'SomePodLibrary'

end
2
funct7

テストターゲットのポッド構成をオフにすると問題が解決しましたが、ポッド構成が乱れていることが原因でした。

1
Pellet

私にとっては、CloudKitエンタイトルメントをオンにしたばかりです。何らかの理由で建物が壊れた。

0
CommaToast

同様の問題がありました:

FrameworkAインポートFrameworkB

FrameworkA-TestsもインポートFrameworkB

問題を解決したのは、FrameworkA-Tests内のFrameworkBへのすべての参照を削除(コメント)してから、テストを1回実行し、参照のコメントを外すことでした。

FrameworkA-TestsFrameworkBをインポートして正常に実行されるようになりました。

0
vauxhall