我有一个带有用户界面项目(UI)和核心逻辑项目(Core)的XCode工作区。我想在UI项目中进行OCUnit单元测试,所以我添加了一个新的测试目标,就像通常那样。
我可以运行测试,直到我为主UI目标中的类放入import语句,然后再引用Core项目。
我得到的错误是“未找到词法或预处理器问题'xxx.h'文件”。当我直接构建主UI目标时,我没有收到此消息。
就好像主UI目标在构建时知道Core,但是当它从测试目标引用时,似乎对Core一无所知。
我采取了“使用库链接二进制文件”添加对核心项目的引用的步骤。列表中的项目保持红色。线索?也许,但是链接列表中的红色引用不会阻止UI目标构建和使用核心类。我还使主要目标成为测试目标的依赖。
答案 0 :(得分:10)
请务必查看Apple示例代码“单元测试”: https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742
确保您的库项目在OCUnit测试目标的构建阶段设置为Dependancy,并且它作为库链接。
在Xcode中打开您的项目。在文件菜单中,转到项目设置...(或工作区设置...如果您正在使用工作区)。单击高级...并确保选中唯一。清洁和重建。
检查您的BUILD_PRODUCTS_DIR,看看您的图书馆的标题是否显示在那里。如果他们不这样做,首先检查您的库目标中的构建阶段,以确保您需要的标题位于公共部分(项目部分可能也可以,但尝试公开,看看是否能解决您的问题)。
这涵盖了人们在您的情况下遇到的最常见问题。如有疑问,请检查UnitTests示例中的目标设置。祝你好运!
答案 1 :(得分:2)
除了Jon Reid的回答,我还必须做以下事情: 在测试目标中,转到“构建设置”。将“始终搜索用户路径”设置为“是”
答案 2 :(得分:0)
在测试目标中,转到“构建设置”。将静态库标题的路径添加到标题搜索路径。