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