0

我想在启动后测试我的应用程序委托使窗口成为关键窗口。所以我写了以下测试。

- (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.");
}

在我的应用程序委托方法应用程序:didFinishLaunchingWithOptions:

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

测试失败并告诉我 window.keyWindow 应该是真的。有什么问题吗?如何修复测试?

4

1 回答 1

2

我想这与我的问题iOS 单元测试类似:如何设置/更新/检查 firstResponder?键窗口的实际激活可能发生在主运行循环中。为了让它有机会运行,请尝试在您的测试中调用它:

- (void)runForShortTime
{
    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];
}
于 2013-08-30T04:37:50.627 回答