Apple 在 Xcode 7 中引入了新的 UI 测试,但每当测试启动应用程序时我都会遇到困难,它从应用程序之前拥有的数据开始。这意味着测试不能独立,并且会受到其他测试的影响。
无法访问用户默认值和其他数据,因为正在运行测试的应用程序无法访问被测试应用程序的包。脚本也是毫无疑问的,因为它们可以在测试之前或之后运行。并且没有办法在 iOS 上执行 NSTask 以在每个测试套件之前运行脚本。
有没有办法在每个测试套件之前重置应用程序数据?
最佳答案
不是直接的方式。但是有一些解决方法。
XCUIApplication
可以设置可以改变应用程序行为的命令行参数和环境变量。
main.m
文件的一个简单示例:
int main(int argc, char * argv[]) {
#if DEBUG
// Reset all data for UI Testing
@autoreleasepool {
for (int i = 1; i < argc; ++i) {
if (0 == strcmp("--reset-container", argv[i])) {
NSArray *folders = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSFileManager *fm = [[NSFileManager alloc] init];
for (NSString *path in folders) {
[fm removeItemAtPath:path error:nil];
}
// Also remove documents folder if necessary...
}
}
}
#endif
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}
}
并在 -[XCTestCase setUp]
添加:
XCUIApplication *app = [[XCUIApplication alloc] init];
app.launchArguments = @[@"--reset-container"];
[app launch];
关于ios - 如何在每次使用 Xcode 7 UI 测试进行测试后重置应用程序数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32351149/