4

假设我有以下应用程序结构:

[View Controller 1] -> tap on next button
                       [View Controller 2] -> Check for Title

在 EarlGrey 中,我通过以下方式定义了这个测试:

[[EarlGrey selectElementWithMatcher:grey_text(@"Next Button")]
    performAction:grey_tap()]
[[EarlGrey selectElementWithMatcher:grey_text(@"Screen Title")]
    assertWithMatcher:grey_sufficientlyVisible()];

但是现在,当我想测试时[View Controller 3],我注意到应用程序仍然卡在[View Controller 2]. 是否有我错过的电话可以让我返回第一个屏幕或重置应用程序以进行下一次测试?

4

1 回答 1

4

与任何 xctest 一样,该应用程序不会重新启动,并保持与前一个测试离开它时相同的状态。您需要在测试用例的 tearDown 或 setUp 中明确重置应用程序状态。你可以:

  1. 编写在每个测试用例完成后将应用程序带回主屏幕的 UI 交互。

  2. 在您的 App 委托中引入一个方法resetApplicationForTesting,并从每个测试用例的 setUp 方法中调用该方法。如果此逻辑需要与多个测试用例共享,请考虑创建这些测试用例继承的 BaseTestClass。

在测试的 setUp 方法中:

    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    [delegate resetApplicationForTesting];
于 2016-08-01T22:18:56.043 回答