2016-07-26 3 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 обеспечивает GREYCondition API, который можно использовать в методе установки или в начале вашего конкретного теста, чтобы сделать EarlGrey ждать, пока вы ждете заставок, чтобы исчезнуть. Вы можете сделать это, используя код, похожий на то, что у них есть в их 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."); 

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

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