【问题标题】:Unit Tests are always "successful" after adding OCMock添加 OCMock 后,单元测试总是“成功”的
【发布时间】:2026-01-22 17:20:09
【问题描述】:

我想在我的 Cocoa 项目的单元测试中使用 OCMock。我已经下载了最新版本的 OCMock (2.0.1) 并将 OCMock.framework 复制到我的项目目录中。在 Xcode 中,我已将框架添加到单元测试目标的 link 阶段。然后我添加了一些使用 OCMock 类的代码。

从那时起,所有单元测试都报告为“成功” - 绿灯,没有错误或警告。即使在引入STFail 调用之后,Xcode 仍声称“测试成功”。在任意测试方法中放置断点表明它们都没有被执行。

如果我使用 OCMock 注释掉代码,包括 import 指令,问题仍然存在。

当我从链接阶段删除 OCMock 时,问题消失了 - 即 STFails 再次开始失败。

这类似于我之前问过的another question,但不完全相同:在这种情况下,日志导航器中的信息显示没有错误。什么可能导致这种行为?我可以做些什么来诊断这个问题?

【问题讨论】:

    标签: cocoa unit-testing frameworks ocmock sentestingkit


    【解决方案1】:

    原来我是 missing a Copy Files build phase 的框架,这显然可能导致 a variety of issues

    这对我有用:

    1. 复制文件 阶段添加到单元测试目标的构建阶段。我将它放置在 Run Script 阶段之前,使其成为倒数第二个。
    2. OCMock.framework项从项目导航器拖到阶段以添加它;使用+ 按钮添加它在 Xcode 4.6 中不起作用(可能是因为框架是目录?)。
    3. 将阶段的目标设置为“框架”。
    4. 在单元测试目标的构建设置中,查找 Runpath Search Paths 并添加条目 @loader_path/../Frameworks

    这样,单元测试可执行文件将能够在运行时找到框架。请注意,您也可以使用“产品目录”作为复制文件阶段的目的地,在这种情况下,您可以跳过第四步。

    【讨论】: