说我有以下应用程序结构:
[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]
上。是否有一个我错过的电话可以让我回到第一个屏幕或重置应用程序以进行下一次测试?
答案 0 :(得分:3)
与任何xctest一样,应用不重新启动并保持与之前测试相同的状态。您需要在测试用例的tearDown或setUp中显式重置app状态。你可以:
在每个测试用例完成后编写将App带回主屏幕的UI交互。
在App委托中引入方法resetApplicationForTesting
,并从每个测试用例的setUp方法调用该方法。 如果需要与多个测试用例共享此逻辑,请考虑创建这些测试用例继承的BaseTestClass。
在测试的setUp方法中:
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate resetApplicationForTesting];