2

我已按照 Apple 为iPhone 上的单元测试应用程序发布的说明进行操作,当我将活动 SDK 设置为“iPhone Simulator”时,一切正常。我将它配置为始终构建和运行我的测试作为构建应用程序本身的一部分。

Apple 暗示(通过省略)这应该一直有效,但是当我将活动 SDK 设置为“iPhone 设备”时会跳过测试。我也与 OCMock 链接,而不是失败的测试,这个警告是在构建日志中:

ld: warning: in .../build/Debug-iphoneos/OCMock.framework/OCMock, missing required architecture arm in file

将单元测试包作为主应用程序的依赖项非常好,因此这些测试在每次构建时运行,但如果它在设备构建期间不起作用,它的实用性会大大降低。这是一个已知但未记录的限制吗?

4

1 回答 1

0

正如 Kristopher 评论的那样,这正是 XCode 的行为方式。当 SDK 设置为 Simulator 时,单元测试目标末尾的运行脚本步骤实际上会运行构建的目标,但如果您查看构建输出,它会在针对设备 SDK 构建时停止。

基本上,针对 Simulator SDK 构建您的 LogicTests 并针对 Device SDK 构建您的 ApplicationTests。这是一种痛苦,但这就是它的工作方式。

此外,如果您想让 OCMock 为 ARM 工作(您可能需要在实际设备上运行的应用程序测试),我相信他们的 OCMock 库目标默认为“胖”/通用。也就是说,它将在同一个库中包含 i386 代码和 arm 代码。如果您查看他们的存储库并自己构建它,您将获得最佳结果。

于 2010-09-25T16:35:32.703 回答