由于意外错误,无法加载测试包

Posted

技术标签:

【中文标题】由于意外错误,无法加载测试包【英文标题】:Test bundle could not be loaded because an unanticipated error 【发布时间】:2014-08-01 11:58:53 【问题描述】:

最近我开始为一个旧的静态库编写测试用例。我已经将库加载到 Xcode 5,由于静态库是旧的,我必须手动添加带有测试目标的 TestProject。

当我尝试“Product-->Test”时,它会启动模拟器并且控制台显示以下错误

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:

我不知道为什么会出现这个错误。

对于指出正确方向的任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

如果其他读者收到此错误,并且您正在使用 Carthage 添加框架,请确保 Copy Files 阶段使用 Destination: Frameworks

如果您不小心将框架添加到具有不同目标(框架除外)或 Copy Bundle ResourcesCopy Files 阶段,这也会产生损坏/无效包错误消息。

【讨论】:

这应该是公认的答案,这正是我的设置出了什么问题。不知道为什么接受的答案说要确保拱门和 Mach-O 类型是正确的,因为这些东西总是按照默认描述设置。无论如何感谢@odlp【参考方案2】:

我遇到了类似的问题。对我来说,问题在于一个单元测试框架,它是一个动态框架,但没有复制到 xctest 包中。

解决方案是向我的单元测试目标添加“复制文件”阶段,将其目标设置为“框架”并将我的框架添加为输入文件。

【讨论】:

这成功了!如果使用 CocoaPods,我认为这是处理此问题的最佳方法 这可能与以下 CocoaPods 问题有关。 github.com/CocoaPods/CocoaPods/issues/5250 我在这个问题上苦苦挣扎了两个星期。这救了我的命。谢谢。 ? 成功了。虽然不知道为什么我们需要做这一步?到现在为止还挺好。谢谢。【参考方案3】:

我能够通过为测试目标设置主机应用程序来解决此问题:

【讨论】:

这意味着您的应用程序将启动并运行每一个测试,这不是您在单元测试中想要做的。 @delta2flat 部分正确。模拟器和应用程序将启动,这将需要一些额外的时间,但这只会在所有测试中发生一次(而不是每次测试)。如果您将主机应用程序设置为无,请确保将主机应用程序导入的所有目标添加到测试目标。您不必等待应用程序启动,就可以赢得那段时间所需的时间;) 虽然您不想练习,但可能还有其他前兆——通过网络登录、初始数据状态、用户 UI 响应、用户设置等。当我删除主机应用程序时,启动也是更快,因为我可以以真正的“黑盒”方式测试单个方法...... 这对我有用!删除 Xcode beta 并将 Xcode 选择更改为常规 Xcode 目录后发生【参考方案4】:

我自己找到了答案。

您的构建设置 -> 库和测试项目的架构应该相同

架构 -> 架构 = Standrad 架构 (armv7 ,armv7s , arm64)$(ARCHS_STANDARD)

您的测试项目的链接 -> Mach-O 类型应该是 Bundle

链接 -> Mach-O 类型 = 捆绑

进行构建和运行测试。就是这样

【讨论】:

非常感谢。 Linking -> Mach-O Type = Bundle 就是这样做的。【参考方案5】:

对我来说,这个问题是由于我的测试目标中的“ios 部署目标”构建设置与我的主应用程序不同。一旦我使它们相同,问题就消失了。

【讨论】:

这对我有用。我已经降低了主机应用程序的部署目标,但忘记为测试目标做同样的事情,所以我看到了这个错误。谢谢!【参考方案6】:

检查您是否忘记在Podfile 中添加测试目标:

target 'MyProject' do

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

  pod 'SomePodLibrary'

end

【讨论】:

【参考方案7】:

无法加载捆绑包 UITest,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包

验证您的所有目标是否使用相同的 iOS 版本: 构建设置 -> iOS 部署目标

【讨论】:

【参考方案8】:

关闭测试目标的 pod 配置解决了我的问题,这与 pod 配置弄乱了它有关。

【讨论】:

【参考方案9】:

对我来说,我们刚刚开启了 CloudKit 授权。由于某种原因破坏了建筑。

【讨论】:

【参考方案10】:

有类似的问题:

FrameworkA 导入 FrameworkB

FrameworkA-Tests 还导入 FrameworkB

解决问题的方法是删除(注释)FrameworkA-Tests 中对 FrameworkB 的所有引用,然后运行测试一次并取消注释。

FrameworkA-Tests 现在导入 FrameworkB 并且运行良好。

【讨论】:

以上是关于由于意外错误,无法加载测试包的主要内容,如果未能解决你的问题,请参考以下文章

SSIS 包 - 由于错误 0xC0014062 无法加载包

捆绑包 UITests 无法加载,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包

SQL作业sql ssis作业错误:“由于错误0xC0010014导致程序包无法加载,这在CPackage :: LoadFROMXML失败时会发生

错误 找不到或无法加载主类

Dynamics 365 Developer Toolkit 错误:由于网络中断而无法加载实体

Outlook 2010 mapi无法加载信息服务msncon.dll