在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}
(然后是我没有包含的一些诊断输出)
我经过广泛的谷歌搜索后检查过:
我该如何解决这个问题?
答案 0 :(得分:15)
确保您的应用目标和测试目标的iOS Deployment target
字段相同
答案 1 :(得分:3)
我有同样的问题。只需在iOS11.1模拟器上构建并运行相关的应用程序目标(恰好与测试目标的“iOS部署目标”相匹配),它就开始工作了。
似乎第一次启动测试时没有触发测试主机的构建。后续运行似乎根据需要触发构建,一切都很好。
YMMV
答案 2 :(得分:2)
我将Xcode版本从9.3更新到10时发生了。对于我而言,删除DerivedData,然后进行单元测试。
答案 3 :(得分:0)
我有同样的错误。对我来说,它的工作原理如下:
答案 4 :(得分:0)
在我的情况下,我在OCMock.frameworked
的构建短语中使用的是{strong> Mac 版本的Link Binary with Libraries
,用于 iOS 项目。
删除它为我解决了这个问题。
答案 5 :(得分:-3)
使用另一台ios11设备运行解决问题