问题描述
||
我写了我的第一个简单的单元测试,并且不了解魔术目标c编译器。我可以编写单元测试方法,而无需在测试类.h文件中声明它们。
我的测试类仍然是空壳:
@interface chronos2Tests : SenTestCase {
@private
}
@end
在.m文件中,我可以编写单元测试方法,其名称以test开头。我以为我必须在.h文件中声明所有成员函数?是否可以在目标c中编写私有成员函数而不在.h文件中声明它们?
解决方法
在Objective-C中,您无需声明方法。 ObjC传递在运行时调度的消息。我们声明方法是因为它为程序员提供了文档。在许多情况下,当您传递没有匹配方法的消息时,编译器会生成警告,但这再次是为了帮助程序员。这是合法的,在某些情况下甚至是正确的。
,Test1ѭ方法被SenTest反射地调用,这就是您不需要头文件定义方法的原因。
编辑:
Objective-C中的标题主要目的是向编译器提示如何在不公开实现细节的情况下访问对象。它还用作文档形式,因此是可选的。 OCUnit是开源的,在您的测试用例中发生的神奇事情实际上只是记录在案的
NSInvocation
和类类别的工作。