你如何单元测试CocoaPod代码?

时间:2013-03-13 18:52:24

标签: objective-c unit-testing cocoapods

我正在努力将Cocoapods的魔力带到我的公司,但它已经遇到了一个小麻烦。我们需要能够对来自Cocoapods的代码进行单元测试。

所以,我的问题是,是否有其他人在他们的公司中遇到过这种情况(或者是否有人只是偏执于关心单元测试此代码并想出如何?)。它对我们来说可能不是一个交易破坏者,但如果我提前排序,它肯定会帮助管理层顺利完成。

我们可能会在客户端应用程序中插入测试,但考虑到我们会使用pod来减少手动工作,这是一项非常多的手动工作。不管怎么说,这样做会很好。

3 个答案:

答案 0 :(得分:3)

在我Podfile我使用的内容如下:link_with ['Sail', 'Sail-Tests']

这会将我的所有Pod与我的正常目标和测试目标联系起来。然后从我的测试我可以导入和测试我想要的任何东西。这可能与“在客户端应用程序中插入测试”重叠。

答案 1 :(得分:1)

如果您想使用类似于Xcode创建的设置(测试目标取决于被测试的目标),另一种选择是:

pod 'ObjectiveSugar', '~> 0.5'

target :test, :exclusive => true do
  pod 'OCMock', '~> 2.0.1'
end

将目标标记为独占表示它不应该继承父项的依赖项。这可以防止此设置出现重复符号错误。

答案 2 :(得分:0)

我使用Cocoapods集中了20多个应用程序的整个套件的核心功能,这些应用程序是相同“基础”应用程序的白标签版本。为此,我设置了两个Xcode项目的结构。

第一个包含核心功能,包括验证预期行为的单元测试(在我的情况下是Kiwi)。规范以及xcodeproj没有出现在podspec中,但项目是在CI(Jenkins)下测试的。

第二个项目包含whitelabeled app(每个应用程序一个项目),它依赖于通过Podfile进行的第一个项目设置。在这个轻量级应用程序也是Kiwi规范,只测试该特定应用程序的任何自定义代码。它不再测试核心类,因为它们已经被覆盖了。该项目也在CI之下。

因此,您的问题的主要答案是您的库不仅包含依赖项目所需的源文件,还包含运行单元测试的编译Xcode项目(应用程序或库)。