如何在命令行GHUnit中使用UIApplicationDelegate?

时间:2011-06-25 19:05:18

标签: command-line ios4 uiapplicationdelegate xunit gh-unit

我在从模拟器运行和从命令行运行之间存在GHUnit结果的差异。 如何在cli中使用UIApplicationDelegate?

在我的sample app - tags stackoverflow-6479906。 我想将苹果的 OCUnit 示例转移到 GHUnit 一个。

期望值:

“appDelegate”都不是零。

电流:

从模拟器运行正常。但是从cli运行会引发异常。https://gist.github.com/1046753

参考:apple's unittest example

注意:我读取了异步NSURLConnection示例,但我找不到解决方案并在我的UIApplicationDelegate案例中进行调整。

1 个答案:

答案 0 :(得分:1)

我建议您为app委托设计测试用例,以便实例化它的实例并从那里调用方法和测试输出。

考虑这样的结构:

@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框架。事实上,GHUnit的GUI版本实际上是在实例化自己的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");
}