我已按照Apple为unit testing applications on iPhone发布的说明进行操作,当我将活动SDK设置为“iPhone模拟器”时,工作正常。我将它配置为始终构建和运行我的测试,作为构建应用程序本身的一部分。
Apple(通过省略)暗示这应该一直有效,但是当我将活动SDK设置为“iPhone设备”时,会跳过测试。我也在与OCMock链接,而不是测试失败,这个警告在构建日志中:
ld: warning: in .../build/Debug-iphoneos/OCMock.framework/OCMock, missing required architecture arm in file
将单元测试包作为主应用程序的依赖项非常好,因此这些测试在每次构建时运行,但如果在设备构建期间不起作用,则其实用程序会大大减少。这是一个已知但未记录的限制吗?
答案 0 :(得分:0)
正如Kristopher评论的那样,这就是XCode的行为方式。单元测试目标结束时的“运行脚本”步骤将在SDK设置为模拟器时实际运行构建的目标,但是如果查看构建输出,则在构建设备SDK时就会出错。
基本上,针对Simulator SDK构建LogicTests并针对Device SDK构建ApplicationTests。这是一种痛苦,但这就是它的工作方式。
另外,如果你想让OCMock为ARM工作(你可能想要在实际设备上运行的应用程序测试),我相信他们的OCMock lib目标是默认的“胖”/通用。也就是说,它将在同一个库中包含i386代码和arm代码。如果您查看他们的存储库并自己构建它,您将获得最佳结果。