使Objective-C中的非接口方法可测试

时间:2010-07-11 16:12:55

标签: objective-c unit-testing

我目前正在编写一个Objective-C类,它的接口中有一个相对复杂的方法。出于问题的目的,我将使用以下声明......

@interface Processor : NSObject {

}

- (NSObject*)doSomeComplicatedProcessing:(NSObject*)param;

@end

所以doSomeComplicatedProcessing是我复杂的方法。在我的doSomeComplicatedProcessing实现中,我调用了一系列在Processor.m中声明和实现的其他方法(即它们不是接口的一部分)。这些方法不是接口的一部分,因为它们仅用于doSomeComplicatedProcessing的实现,不会对Processor的客户端有用。

我想知道测试这些方法的最佳做法是什么?显然我可以测试doSomeComplicatedProcessing作为一个整体,但是如果我想测试非接口方法怎么办?

我目前调用这些方法并忽略编译器警告我,处理器'可能没有实现方法someMethodName',但它让我觉得有点脏。对于这个问题,Objective-C是否有最佳实践?

1 个答案:

答案 0 :(得分:3)

您可以在单独的标头中提取声明,例如Processor+Private.h,只有Processor.m和测试代码使用。虽然我想知道当你从外面单独调用它们时是否可以阻止这些私有方法的不变量。