用静态库进行unit testing

我有一个带有用户界面项目(UI)和核心逻辑项目(Core)的XCode工作区。 我想在UI项目中使用OCUnitunit testing,所以我添加了一个新的testing目标,就像通常那样。

我能够运行testing就好了,直到我在主要的UI目标,然后引用核心项目中的类放入导入语句。

我得到的错误是“未find词法或预处理程序问题'xxx.h'文件”。 直接构build主UI对象时,我不会收到此消息。

就好像主要的UI目标在构buildCore时知道的那样,但是当它从testing目标引用时,似乎对于Core一无所知。

我使用“Link Binaries with Libraries”添加了对核心项目的引用。列表中的项目保持为红色。 线索? 也许,但链接列表中的红色参考不会保留构build和使用核心类的UI目标。 我也把主要目标作为testing目标的依赖。

请确保您查看Apple示例代码“unit testing”: https : //developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

确保您的库项目在OCUnittesting目标的构build阶段被设置为“依赖”,并作为库链接。

在Xcode中打开你的项目。 在文件菜单中,转到项目设置…(或工作区设置…如果您正在使用工作区)。 单击高级…并确保选中唯一。 清洁和重build。

检查你的BUILD_PRODUCTS_DIR,看看你的库头是否显示在那里。 如果他们不这样做,首先检查你的库目标中的构build阶段,以确保你需要的标题是在公共部分(项目部分也可以,但尝试公开,看看是否可以解决您的问题)。

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

除了Jon Reid的回答之外,我还必须执行以下操作:在testing目标中,转到“生成设置”。 将“总是search用户path”设置为YES

在您的testing目标中,转到“生成设置”。 将静态库标题的path添加到标题searchpath。