代码之家  ›  专栏  ›  技术社区  ›  Steve Madsen

单元测试仅在活动的SDK为“模拟器”时自动运行?

  •  2
  • Steve Madsen  · 技术社区  · 14 年前

    我遵守了苹果发布的指示 unit testing applications on iPhone 当我将ActiveSDK设置为“iPhoneSimulator”时,一切都很好。我将它配置为始终构建和运行我的测试,作为构建应用程序本身的一部分。

    苹果暗示(由于疏忽)这应该一直有效,但是当我将活动的sdk设置为“iphone设备”时,测试被跳过。我还链接到ocmock,而不是失败的测试,此警告位于生成日志中:

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

    让单元测试包成为主应用程序的依赖关系是非常好的,因此这些测试在每个构建中运行,但是如果它在设备构建期间不工作,那么它的实用性会大大降低。这是一个已知的,但没有文件证明的限制吗?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Matt Baker    14 年前

    正如克里斯托弗所评论的,这只是Xcode的行为方式。当sdk设置为simpulator时,单元测试目标末尾的运行脚本步骤将实际运行构建的目标,但是如果您查看构建输出,它将在针对设备sdk构建时停止运行。

    基本上,根据SimulatorSDK构建逻辑测试,并根据设备SDK构建应用程序测试。这是一种痛苦,但这只是它的工作方式。

    另外,如果您希望让ocmock为arm工作(您可能希望在实际设备上运行应用程序测试),我相信它们的ocmock lib目标在默认情况下是“fat”/通用的。也就是说,它将在同一个库中包含i386代码和ARM代码。如果您检查他们的存储库并自己构建它,您将获得最好的结果。