如何在目标 c 中对目标的项目级 API 进行单元测试?

Posted

技术标签:

【中文标题】如何在目标 c 中对目标的项目级 API 进行单元测试?【英文标题】:How can I unit test project level apis of a target in objective c? 【发布时间】:2019-04-08 10:31:53 【问题描述】:

我想为我的目标(比如 ABC)的 api 编写单元测试。我已经创建了一个单元测试目标来满足这个要求(Sav ABCTests)。现在我可以测试我的目标(ABC)的公共标头,但不能测试它的项目和私有标头。由于我正在进行的项目是 SDK 而不是应用程序,因此我无法公开每个标头。

我面临的问题是我无法导入项目/私有标头。 我正在使用 XCode 10 和 Objective-C 。

【问题讨论】:

这样做有什么问题? 无法在测试目标(即 ABCTests)中导入项目级标题 How to unit tests a private or internal function in Swift?的可能重复 在目标 c 中没有 @testable 导入模块之类的东西。这对 obj c 没有帮助。 【参考方案1】:

在 Objective-C 中,不要将 @import 您的目标 API 作为一个模块。相反,#import 你想要的特定标题。

【讨论】:

问题是通过 #import ,在测试目标(即 ABCTests)中无法访问项目级别的标头 是的。项目的输出是 .framework 而不是 .app 我刚刚创建了一个小框架,ABC。它的测试可以#import 来自框架的任何头文件,即使头文件被标记为私有。我不明白是什么阻止你这样做。您是否尝试过创建一个全新的框架作为实验? 我尝试创建新框架并且它工作正常,谢谢 Jon。你能说出是什么构建设置导致的吗? 不,我从未遇到过您描述的问题。我建议仔细将新框架与您现有的框架进行比较。在最坏的情况下,您可以将代码移动到新网络中并尝试将其用作新家。祝你好运!

以上是关于如何在目标 c 中对目标的项目级 API 进行单元测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何在C#中对单元测试性能优化进行单元测试?

使用本机单元测试项目在 Visual Studio 2017 中对 C 代码进行单元测试

如何在目标 c 的每一行上创建一个包含 3 个单元格的集合视图

观隅Alpha阶段测试报告

观隅Beta阶段测试报告

更改部署目标后无法再将应用模块导入单元测试