testing - 是否可以使用 XCode 的 SenTestingKit 对静态库项目进行单元测试?

标签 testing ios static-libraries ocunit

我已经创建了一个 iOS 单元测试目标,用于按照 Apple 文档中提供的步骤进行逻辑测试。

但是我的构建失败了并且出现了以下错误:

Undefined symbols:
"_OBJC_CLASS_$_MyClass", referenced from: objc-class-ref-to-MyClass in LogicTests.o ld: symbol(s) not found collect2: ld returned 1 exit status

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

谢谢

最佳答案

由于静态库的性质,您无法执行应用程序测试,而这正是您想要做的。但是,您可以执行逻辑测试。

您对客户端应用程序中的单元测试的观察是正确的。

Xcode 模板可选择包含单元测试,但如果您转到该单元测试的build设置,您会看到它没有指定测试主机或捆绑加载器。这是因为静态库的性质。它们不是应用程序,它们是库 - 所以您可以进行逻辑测试您不能进行应用程序测试

您可能希望对静态库执行的应用程序测试可能包括以下场景:

My library creates an SQLite database at runtime, I wish to perform a unit test to check everything is inserting and/or updating as expected.

为了使用单元测试对此进行测试,必须创建另一个应用程序,该应用程序包含 或以其他方式依赖 您的库。此应用程序然后包含您的库,然后可以在那里设置应用程序测试。

关于testing - 是否可以使用 XCode 的 SenTestingKit 对静态库项目进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4465267/

相关文章:

css - 当计算出的宽度不准确时,如何在柏树中测试元素的宽度?

iphone - 在 Storyboard项目中嵌入cocos2d

iPhone SDK 4.0.2?

ios - monotouch 库和我使用的一些第 3 方库中的重复符号

objective-c - 如何使用 libtool 在 Mac OS 上创建 .a 文件(静态库)?

c - 如何拆分大型.a静态库?

node.js - 如何在所有测试之前设置 DynamoDB 表并在所有测试之后将其拆除?

testing - 在 go test 中处理命令行参数

PHPMD 捕获/抑制 fatal error

c# - 检查字段并在按钮上使用 segue 单击 Xamarin iOS (C#)