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

私のアプリでは、メソッド applicaton:didFinishLaunchingWithOptions: をデリゲートします。

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

テストは失敗し、window.keyWindow は true である必要があると言われました。何か間違っていることでも?どうすればテストを修正できますか?

4

1 に答える 1

2

これは私の質問iOS unit test: How to set/update/examine firstResponder?と同様の問題だと思います。キー ウィンドウの実際のアクティブ化は、おそらくメインの実行ループで発生するものです。実行する機会を与えるには、テストでこれを呼び出してみてください。

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