XCTest,无法加载测试包。测试启动时崩溃

时间:2017-11-15 17:04:46

标签: ios xcode 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} (然后是我没有包含的一些诊断输出)

我经过广泛的谷歌搜索后检查过:

  • 仅构建活动架构设置在应用和测试目标中保持一致(值为是)
  • 启用可测试性对主目标
  • 设置为“是”
  • 我已经删除目标并重新开始,没有运气

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:15)

确保您的应用目标和测试目标的iOS Deployment target字段相同

答案 1 :(得分:3)

我有同样的问题。只需在iOS11.1模拟器上构建并运行相关的应用程序目标(恰好与测试目标的“iOS部署目标”相匹配),它就开始工作了。

似乎第一次启动测试时没有触发测试主机的构建。后续运行似乎根据需要触发构建,一切都很好。

YMMV

答案 2 :(得分:2)

我将Xcode版本从9.3更新到10时发生了。对于我而言,删除DerivedData,然后进行单元测试。

答案 3 :(得分:0)

我有同样的错误。对我来说,它的工作原理如下:

  • 在PROJECT NAVIGATOR上选择测试
  • 在右侧的FILE INSPECTOR中,选择 Target Membership (目标成员资格),在本例中为您的测试目标。

答案 4 :(得分:0)

在我的情况下,我在OCMock.frameworked的构建短语中使用的是{strong> Mac 版本的Link Binary with Libraries,用于 iOS 项目。

删除它为我解决了这个问题。

答案 5 :(得分:-3)

使用另一台ios11设备运行解决问题