2013-08-30 3 views
0

Я хочу проверить окно приложения делегата приложения как ключевое окно после запуска. Поэтому я пишу следующие тесты.Тестирование модуля keyWindow с использованием OCUnit вызывает ошибку

- (void)setUp 
{ 
    window = [[UIWindow alloc] init]; 
    appDelegate = [[FGAppDelegate alloc] init]; 
    appDelegate.window = window; 
    appDidFinishLaunchingReturn = [appDelegate application: nil didFinishLaunchingWithOptions:nil]; 
} 

- (void)tearDown 
{ 
    window = nil; 
    appDelegate = nil; 
} 
- (void)testWindowIsKeyAfterApplicationLaunch 
{ 
    STAssertTrue(window.keyWindow, @"App delegate's window should be key."); 
} 

В моем приложении делегат метода Applicaton: didFinishLaunchingWithOptions:

... 
    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

Испытание не удалось, и сказал мне window.keyWindow должно быть правдой. Что-то не так? Как я могу исправить тест?

ответ

2

Я предполагаю, что это аналогичная проблема для моего вопроса iOS unit test: How to set/update/examine firstResponder? Фактическая активация окна ключа - это, вероятно, что-то, что происходит в цикле основного запуска. Чтобы дать ему шанс поработать, попробуйте назвать это в своем тесте:

- (void)runForShortTime 
{ 
    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]]; 
} 
+0

Благодарим вас за ответ. Я действительно смотрел ваше видео на модульном тестировании. Вернемся к вопросу, где вы предлагаете мне использовать метод? Я немного смущен тем, как это повлияет на тест. – newguy

+0

Вызовите '-runForShortTime' перед тем, как вы проверите ключевое окно. –

 Смежные вопросы

  • Нет связанных вопросов^_^