ios - 单元测试私有(private)方法 - Objective-C

标签 ios objective-c unit-testing ios6 gh-unit

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

我不想讨论是否应该测试私有(private),但会专注于如何测试它。

谁能给我一个如何测试私有(private)方法的例子?

最佳答案

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

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

所以在测试用例文件的顶部添加这样的内容:

@interface SUTClass (Testing)

- (void)somePrivateMethodInYourClass;

@end

SUTClass 是您正在为其编写测试的类的实际名称。

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

关于ios - 单元测试私有(private)方法 - Objective-C ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18354788/

相关文章:

java - 如何在不依赖数据库的情况下将 JUnit 测试应用于 Insert()、update()、delete() 方法(使用 Mockito)

ios - MapKit map 在不同 ViewController 内部调用的函数内部返回 nil

iphone - 如果用户之前访问过此页面,如何实现自动跳转到详细页面(或修复我的代码以执行此操作,该代码存在设计缺陷)

IOS7 - 自动布局屏幕宽度

iOS 错误 : No visible @interface for 'xxxx' declares the selector 'alloc'

cocoa-touch - 如何使用 Cocoapods 设置 Kiwi?

iPhone 命令行单元测试(和文件 I/O)

ios - 如何通过 -addSublayer : respond to touch events? 添加 UI 元素

ios - 在 swift 中关闭弹出窗口后更新标签文本

ios - 限制 UItableView 的页眉 View 和页脚 View 的宽度