我已经创建了一个 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/