我使用GHUnit
进行单元测试。我想要测试私有方法但不知道该如何测试。我发现了很多关于为什么要或者不要测试私有方法的答案,但是没有找到如何测试它们的答案。
本文不会讨论是否应该测试私有方法,而是专注于如何测试它们。
请问是否有人能给我一个测试私有方法的示例?
我使用GHUnit
进行单元测试。我想要测试私有方法但不知道该如何测试。我发现了很多关于为什么要或者不要测试私有方法的答案,但是没有找到如何测试它们的答案。
本文不会讨论是否应该测试私有方法,而是专注于如何测试它们。
请问是否有人能给我一个测试私有方法的示例?
Objective-C中的方法并不是真正的私有。您收到的错误消息是编译器无法验证您调用的方法是否存在,因为它没有在公共接口中声明。
解决方法是在类别中公开私有方法,这告诉编译器该方法是存在的。
因此,请将以下内容添加到测试用例文件的顶部:
@interface SUTClass (Testing)
- (void)somePrivateMethodInYourClass;
@end
SUTClass是您编写测试的类的实际名称。
这将使您的私有方法可见,您可以在没有编译器警告的情况下进行测试。
有点晚,但我刚刚开始接触TDD。
私有方法不应该被测试。因为你编写私有方法来支持公共方法,因此测试公共方法间接地测试了支持它们的私有方法。
原则“不应该测试私有方法”得到了原则“当你需要测试私有方法时,可能意味着你应该将这些方法移到单独的类中”的支持,从而使它们成为公共方法。
如果一个方法是私有的,你就不应该测试它。
想一想这个问题。你应该测试方法的行为和契约,而不是内部实现。
同意 @Lord Zsolt 的观点
还请注意下面的内容(来自 Test-Driven iOS Development ISBN-10: 0-321-77418-3,ISBN-13: 978-0-321-77418-7)
测试私有方法
myClass
没有声明选择器 'myMethod' 的可见 @interface。 - Geek