Как я могу использовать UIApplicationDelegate в командной строке GHUnit? - PullRequest
0 голосов
/ 25 июня 2011

У меня есть различия в результатах GHUnit между запуском из симулятора и запуском из командной строки. Как я могу использовать UIApplicationDelegate в cli?

В моем примере приложения - теги stackoverflow-6479906 . Я хочу перенести пример OCUnit яблока в GHUnit one.

Ожидать:

Оба "appDelegate" не ноль.

Ток:

Запуск с симулятора работает нормально. Однако беги от кликата вызывает исключение. https://gist.github.com/1046753

Refs: пример тестирования Apple

Примечание. Я прочитал пример асинхронного NSURLConnection, но я не нахожу решения и не корректирую его в моем случае UIApplicationDelegate.

1 Ответ

1 голос
/ 17 июля 2011

Я рекомендую вам разработать тестовый пример для вашего делегата приложения так, чтобы он создавал его экземпляр и вызывал оттуда методы и тестовые результаты.

Рассмотрим такую ​​структуру:

@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 обходит каркас пользовательского интерфейса, который создает UIApplicationDelegate в версии CLI.Фактически, версия 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");
}
...