7

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

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

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

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

我采取了使用“Link Binaries with Libraries”添加对核心项目的引用的步骤列表中的项目保持红色。线索?也许吧,但链接列表中的红色引用并没有阻止 UI 目标构建和使用核心类。我还使主要目标成为测试目标的依赖项。

4

3 回答 3

10

确保查看 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 示例中的目标设置。祝你好运!

于 2012-05-31T19:15:18.347 回答
2

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

于 2013-01-08T21:38:24.420 回答
0

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

于 2012-06-08T18:23:16.050 回答