我建议您为您的应用程序委托设计测试用例,以便它实例化它的一个实例并从那里调用方法和测试输出。
考虑这样的结构:
@interface FizzBuzzObjCStudyTest : GHTestCase {
ObjCStudyAppDelegate *appDelegate;
}
@end
@implementation FizzBuzzObjCStudyTest
-(void)setUp
{
appDelegate = [[ObjCStudyAppDelegate alloc] init];
}
-(void)tearDown
{
[appDelegate release];
}
-(void) testAppDelegate
{
GHAssertNotNil(appDelegate, @"Cannot find the application delegate", nil);
// test other methods of ObjCStudyAppDelegate here, or make more test methods.
}
@end
GHUnit 框架绕过了在 CLI 版本中创建 UIApplicationDelegate 的 UI 框架。实际上,GUI 版本的 GHUnit 实际上是在实例化自己的 UIApplicationDelegate,称为 GHUnitIPhoneAppDelegate。
这是来自 GHUnitIOSMain.m 的片段,展示了它如何为 GUI 版本设置自己的应用程序委托:
// If GHUNIT_CLI is set we are using the command line interface and run the tests
// Otherwise load the GUI app
if (getenv("GHUNIT_CLI")) {
retVal = [GHTestRunner run];
} else {
retVal = UIApplicationMain(argc, argv, nil, @"GHUnitIPhoneAppDelegate");
}