【问题标题】:Unit Testing in With A Static Library使用静态库进行单元测试
【发布时间】:2012-05-16 04:27:32
【问题描述】:

我有一个带有用户界面项目 (UI) 和核心逻辑项目 (Core) 的 XCode 工作区。我想在 UI 项目中进行 OCUnit 单元测试,所以我添加了一个新的测试目标,就像通常所做的那样。

我能够很好地运行测试,直到我为主 UI 目标中的类添加导入语句,而这些类又引用了 Core 项目。

我得到的错误是“找不到词法或预处理器问题 'xxx.h' 文件”。当我直接构建主 UI 目标时,我没有收到此消息。

就好像主 UI 目标在构建时知道 Core,但是当从测试目标中引用它时,它似乎对 Core 一无所知。

我采取了使用“将二进制文件与库链接”添加对核心项目的引用的步骤,列表中的项目仍为红色。线索?也许吧,但链接列表中的红色引用并没有阻止 UI 目标构建和使用核心类。我还将主要目标作为测试目标的依赖项。

【问题讨论】:

    标签: ios xcode ocunit


    【解决方案1】:

    请务必查看 Apple 示例代码“单元测试”: https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

    确保您的库项目在您的 OCUnit 测试目标的构建阶段设置为依赖项,并将其链接为库。

    在 Xcode 中打开您的项目。在文件菜单中,转到项目设置...(或工作空间设置...,如果您使用的是工作空间)。单击 Advanced... 并确保选中 Unique。清理并重建。

    检查您的 BUILD_PRODUCTS_DIR 以查看您的库的标题是否显示在其中。如果没有,请首先检查库目标中的构建阶段,以确保您需要的标头位于 Public 部分(Project 部分也可以工作,但请尝试 Public 看看是否能解决您的问题)。

    这涵盖了人们在您的情况下似乎遇到的最常见问题。如有疑问,请对照您的检查 UnitTests 示例中的目标设置。祝你好运!

    【讨论】:

      【解决方案2】:

      除了 Jon Reid 的回答之外,我还必须执行以下操作: 在您的测试目标中,转到构建设置。将“始终搜索用户路径”设置为“是”

      【讨论】:

        【解决方案3】:

        在您的测试目标中,转到构建设置。将静态库标题的路径添加到标题搜索路径。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-09-07
          • 1970-01-01
          • 1970-01-01
          • 2021-03-01
          • 1970-01-01
          • 2014-11-06
          • 2020-09-06
          相关资源
          最近更新 更多