我用GHUnit.我想对私有方法进行单元测试,但不知道如何测试它们.我找到了很多关于为什么要或为什么不测试私有方法的答案.但没有发现如何测试它们.

我不想讨论我是否应该测试私家车,但将重点讨论如何测试它.

有谁能给我举个例子说明如何测试私有方法吗?

推荐答案

Objective-C中的方法并不是真正私有的.您收到的错误消息是,编译器无法验证您正在调用的方法是否存在,因为它未在公共接口中声明.

解决这个问题的方法是公开类类别中的私有方法,这会告诉编译器这些方法是存在的.

因此,在测试用例文件的顶部添加如下内容:

@interface SUTClass (Testing)

- (void)somePrivateMethodInYourClass;

@end

SUTClass是为其编写测试的类的实际名称.

这将使您的私有方法可见,您可以在没有编译器警告的情况下对其进行测试.

Objective-c相关问答推荐

在 MacOS 上截屏

我在哪里可以找到 info.plist 文件?

'if not' 的 Objective-C 预处理器指令

如何在 iPhone 应用程序的 UINavigationBar 中添加图像

碰撞技术如何运作?

setFont 已弃用?

动态转发: suppress Incomplete Implementation 警告

反编译 Objective-C 库

将子视图添加到 UIButton

从 UIScrollView 中删除所有子视图?

警告的含义在演示过程中!

奇怪的错误 NSAssert

iPhone - 时区便利方法之间的差异

Lipo错误!!无法打开输入文件

强制iphone应用程序以编程方式重新启动?

如何在 Objective C 中将浮点数转换为 int?

ARC时代的财产与ivar

iPhone 正确使用 Application Delegate

为什么 detailTextLabel 不可见?

如何配置我的应用程序 - 菜单项被禁用?