加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – Xcode 7 UI测试后,如何重新设置每次测试后的应用程序数据

发布时间:2020-12-15 02:00:08 所属栏目:百科 来源:网络整理
导读:苹果在Xcode 7中引入了新的UI测试,但是每当测试启动应用程序时,我都会遇到困难,它以应用程序以前的数据开始。这意味着测试不能独立,可以受其他测试的影响。 由于运行测试的应用程序无法访问测试应用程序的捆绑包,因此无法访问用户默认值和其他数据。脚
苹果在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];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读