OCUnit测试不会调用协议方法

时间:2013-01-29 11:06:16

标签: iphone ipad unit-testing

我有一个协议来编写OCUnit测试Caes

@interface ClassDeclaration: NSObject{

... Varables 
}
... Methods
// Protocol declartion!
@end
@protocol Message <NSObject>

-(BOOL) isValid;

@end

实现方法是在另一个名为'NewClassName'的类中编写的

-(BOOL) isValid{

    return (self.message != nil);
}

现在!

我正在编写协议方法的测试用例!

-(void)testIsValid{
    ClassDeclaration *obj = [[ClassDeclaration alloc] init];
    SEL methodName = @selector(isValid);
    BOOL test = [obj respondsToSelector:methodName];
}

我的问题是我能为协议方法编写测试用例吗?

我正在尝试为测试用例调用方法SEL methodName = @selector(isValid);,这个方法不是调用我不知道为什么?任何人都可以让我知道协议方法将在运行时调用,以便如何通过单元测试调用此方法?

@All提前致谢!

1 个答案:

答案 0 :(得分:0)

自从提出这个问题以来已经有一段时间了,但如果有人在这个问题上遇到麻烦,我会有答案。

查看OCMock框架。有了它,您可以模拟对象和协议等。您可以找到框架here,并查看功能here

OCMock有一个类方法,可用于为协议创建模拟:

+mockForProtocol:

与所描述的ocmock.org/features一样,您可以使用以下命令创建模拟

id aMock = [OCMockObject mockForProtocol:@protocol(SomeProtocol)]

还有一个描述:

  

创建一个模拟对象,可以将其用作实现SomeProtocol的对象的实例。

这个话题。要了解OCMock的用法,您可以参考以下帖子:

除了这些链接,您还可以获取发布的链接here背后的信息。

快乐的嘲笑! Tomte