条件を評価する前に15秒待つことになっているテストを書きました。現在のところ、それはずっと短く待機しており、すぐに評価ブロックに行き、エラーが発生します。 after秒のパラメータ:waitWithTimeoutが無視されているようです。EarlGrey GREYCondition waitWithTimeout:15が15秒間待機しない
私のテストコード:
- (void)testAsyncEvent {
[[EarlGrey selectElementWithMatcher:grey_accessibilityID(@"Button")]
performAction:grey_tap()];
// Wait for the main view controller to become the root view controller.
BOOL success = [[GREYCondition conditionWithName:@"Wait for label to change text"
block:^{
NSError *error;
[[EarlGrey selectElementWithMatcher:grey_text(@"Delayed Appearance")]
performAction:grey_tap()
error:&error];
if ([error.domain isEqual:kGREYInteractionErrorDomain] &&
error.code == kGREYInteractionElementNotFoundErrorCode) {
return NO;
}
return YES;
}] waitWithTimeout:15];
GREYAssertTrue(success, @"Label text should be changed after 5 seconds. ");
}
そして、ここでは、ボタンのタップアクションです:
- (IBAction)buttonPressed:(id)sender
{
self.titleLabel.text = @"Button Pressed";
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 4 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),
^(void)
{
dispatch_async(dispatch_get_main_queue(), ^{
self.titleLabel.text = @"Delayed Appearance";
});
});
}
がtitleLabelのテキストを派遣非同期を通して4秒後に「遅延外観」に変更することになっています。しかし、テストのブロックは非常に速く始まりますが、15秒に設定されています。 (そしてそのようなテキストを持つ要素が見つからないので失敗します)。
GRAY APIの同期を無効にすることで、これを回避しました。[[GREYConfiguration sharedInstance] setValue:@(NO) forConfigKey:kGREYConfigKeySynchronizationEnabled];私は今指定した金額を待つ。ですから、同期APIが有効になっているときに早く消してしまう原因は何ですか? – Alex