2016-07-26 4 views
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. 
+0

テストコードのスニペットを教えてください。 – khandpur

答えて

2

EarlGreyあなたが消えてスプラッシュ画面を待っている間EarlGreyを待つ作るためにあなたの設定方法や、あなたの特定のテストの開始時に使用することができますGREYCondition APIを提供します。あなたはfaq pageにあるものと同様のコードを使ってこれを行うことができます。

// 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."); 
関連する問題