web-dev-qa-db-ja.com

XCTest、テストバンドルのロードに失敗しました。テスト起動時にクラッシュする

Xcode 9.1で、古いプロジェクトに単体テストターゲットを追加しましたが、テストを実行できません。ターゲットは起動時にクラッシュし、コンソールで次のエラーが発生します。

バンドル「XXXTests」には現在のアーキテクチャのバージョンが含まれていないため、ロードできませんでした*

フル出力:

2017-11-15 11:52:40.973 XXX[54962:16511010] Failed to load test bundle from file:///Users/XXX/Library/Developer/Xcode/DerivedData/XXX-gaxtmzjadfkxzsdciqnpmyczgntj/Build/Products/DEV-iphonesimulator/XXX.app/PlugIns/XXXTests.xctest/: Error Domain=NSCocoaErrorDomain Code=3585 "dlopen_preflight(/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-gaxtmzjadfkxzsdciqnpmyczgntj/Build/Products/DEV-iphonesimulator/XXX.app/PlugIns/XXXTests.xctest/XXXTests): no suitable image found. Did find: /Users/XXX/Library/Developer/Xcode/DerivedData/XXX-gaxtmzjadfkxzsdciqnpmyczgntj/Build/Products/DEV-iphonesimulator/XXX.app/PlugIns/XXXTests.xctest/XXXTests: mach-o, but wrong architecture" UserInfo={NSLocalizedRecoverySuggestion=Try installing a universal version of the bundle., NSFilePath=/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-gaxtmzjadfkxzsdciqnpmyczgntj/Build/Products/DEV-iphonesimulator/XXX.app/PlugIns/XXXTests.xctest/XXXTests, NSLocalizedFailureReason=The bundle doesn’t contain a version for the current architecture., NSLocalizedDescription=The bundle “XXXTests” couldn’t be loaded because it doesn’t contain a version for the current architecture., NSDebugDescription=dlopen_preflight(/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-gaxtmzjadfkxzsdciqnpmyczgntj/Build/Products/DEV-iphonesimulator/XXX.app/PlugIns/XXXTests.xctest/XXXTests): no suitable image found. Did find: /Users/XXX/Library/Developer/Xcode/DerivedData/XXX-gaxtmzjadfkxzsdciqnpmyczgntj/Build/Products/DEV-iphonesimulator/XXX.app/PlugIns/XXXTests.xctest/XXXTests: mach-o, but wrong architecture, NSBundlePath=/Users/XXX/Library/Developer/Xcode/DerivedData/XXX-gaxtmzjadfkxzsdciqnpmyczgntj/Build/Products/DEV-iphonesimulator/XXX.app/PlugIns/XXXTests.xctest}(そして私が含めなかったいくつかの診断出力)

徹底的にグーグルした後にチェックしたもの:

  • アクティブなアーキテクチャのみをビルド設定はアプリとテストターゲット全体で一貫しています(値はYes)
  • テスト容易性を有効にするメインターゲットに対して[はい]に設定されます
  • ターゲットを削除して最初からやり直しましたが、運がありません

これを修正するにはどうすればよいですか?

6
Andy Obusek

確認してください iOS Deployment targetアプリケーションターゲットとテストターゲットのフィールドは同じです

22
schmidt9

私も同じ問題を抱えていました。 iOS11.1シミュレーター(テストターゲットの「iOSデプロイメントターゲット」と一致する)で関連するアプリケーションターゲットをビルドして実行するだけで、動作を開始しました。

初めてテストを開始しても、テストホストのビルドがトリガーされなかったようです。後続の実行は必要に応じてビルドをトリガーするようで、すべて問題ありません。

YMMV

5
Cirec Beback

Xcodeのバージョンを9.3から10に更新したときに発生しました。私の場合、DerivedDataを削除すると、単体テストが機能します。

2
Hongli Yu

私の場合、MacバージョンのOCMock.frameworked in Link Binary with LibrariesiOSプロジェクトのビルドフレーズ。

それを削除すると、問題は解決しました。

0
Will Gwo

同じエラーが発生しました。そして私にとってそれが機能したのは次のとおりでした:

  • PROJECTNAVIGATORでテストを選択します
  • 右側の[ファイルインスペクター]で、ターゲットメンバーシップ(この場合はテストターゲット)を選択します。
0
Nano Suárez