1

アプリにスプラッシュ スクリーンが表示されます。メイン画面が表示されるまでテストを待機させるにはどうすればよいですか? 待機しないと、アプリの起動直後にテストが失敗します。

// in application:didFinishLaunchingWithOptions: of my AppDelegate...
SplashViewController *splashVC = [[SplashViewController alloc] init];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = splashVC;
[self.window makeKeyAndVisible];

NSTimeInterval splashScreenDuration = 0.5;
[NSTimer scheduledTimerWithTimeInterval:splashScreenDuration
                               target:self
                             selector:@selector(hideSpashScreenAndDisplayMainViewController)
                             userInfo:nil
                              repeats:NO];

// hideSpashScreenAndDisplayMainViewController method simply sets self.window.rootViewController to the main view controller.
4

1 に答える 1

3

EarlGreyは、セットアップ メソッドまたは特定のテストの開始時に使用できるGREYCondition API を提供し、スプラッシュ スクリーンが消えるのを待つ間、EarlGrey を待機させます。よくある質問ページにあるものと同様のコードを使用してこれを行うことができます。

// Wait for the main view controller to become the root view controller.
  BOOL success = [[GREYCondition conditionWithName:@"Wait for main root view controller"
                                             block:^{
    id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate;
    UIViewController *rootViewController = appDelegate.window.rootViewController;
    return [rootViewController isKindOfClass:[MainViewController class]];
  }] waitWithTimeout:5];

  GREYAssertTrue(success, @"Main view controller should appear within 5 seconds.");
于 2016-08-01T08:52:42.650 に答える