是否有可能使用XCode的SenTestingKitunit testing静态库项目?

我已经创build了一个iOSunit testing目标,按照Apple文档中提供的步骤进行逻辑testing。

但是我的构build失败,我得到以下错误:

未定义的符号:
“_OBJC_CLASS _ $ _ MyClass”,引用自:LogicTests.o中的objc-class-ref-to-MyClass ld:符号(s)not found collect2:ld返回1退出状态

通常,如果我想在应用程序中使用我的静态库,我会包含library.a文件和头文件(包括MyClass.h文件…)。 如果我的testing用例正在使用MyClass.h,是否还需要额外的东西来在同一个项目中的静态库上运行逻辑testing?

Tjhanks

由于静态库的性质,你不能执行应用程序testing ,而这正是你所要做的。 但是,您可以执行逻辑testing。

您在客户端应用程序中对unit testing的观察是正确的。

Xcode模板可选地包含unit testing,但是如果您转到该unit testing的构build设置,您会看到它没有指定testing主机或软件包加载器。 这是因为静态库的性质。 他们不是应用程序,他们是库 – 所以你可以做逻辑testing你不能做应用程序testing

您可能希望在静态库上执行的应用程序testing可能包括以下情况:

我的库在运行时创build一个SQLite数据库,我希望执行一个unit testing来检查一切插入和/或更新如预期。

为了使用unit testing来testing,必须创build另一个应用程序,其中包含或者依赖于您的库。 这个应用程序然后包括你的库和应用程序testing,然后可以在那里设置。

苹果有一个示例(UnitTests),演示如何做到这一点: https : //developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

我其实刚刚解决了它。 我必须将我项目中的所有.m文件复制到LogicTest目标的“编译源”。 以及添加框架的来源参考目标的“链接二进制库”部分。

我希望这可以帮助别人

是的,Xcode 4.2有一个可testing的Cocoa Touch静态库的模板。