从 KIF 测试用例中我知道,在应用程序委托方法-application:didFinishLaunchingWithOptions:
运行之前执行设置工作没有直接的可能性。
另一方面,您可以从测试用例触发应用程序重置。我这样做的方式如下:
[[NSNotificationCenter defaultCenter] postNotificationName:@"reset.app.state" object:self];
[测试人员 waitForTimeInterval:1.0];
[[NSNotificationCenter defaultCenter] addObserver:self 选择器:@selector(resetAppState:) name:@"reset.app.state" object:nil];
- 现在我们实现该
resetAppState:
方法,在这里我们再次实例化应用程序窗口和初始视图控制器。如有必要,我们还可以在此处执行其他设置任务。
- (void)resetAppState:(NSNotification*)通知
{
NSLog(@"为 UI 测试重置应用状态");
// 执行其他重置应用程序状态任务,例如清理缓存等
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *controller = [storyboard instantiateInitialViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = 控制器;
[self.window makeKeyAndVisible];
}
这种方法似乎工作得相当好。我可以使用它来截取不同语言的屏幕截图,从而设置应用程序语言并从测试用例重置应用程序状态。
我准备了一个示例项目来说明它是如何工作的:
http ://extrabright.com/dl/ResetAppState.zip