我有一个 VoIP 应用程序,它在入职过程中的某个地方会自行重置。因此,我第一次运行 UI 测试时它总是会失败,而第二次它总是会通过。
我使用这个 UI 测试来创建带有快照 (fastlane) 的屏幕截图,当然我可以告诉快照至少尝试两次。但是我也想在有人合并开发时运行这个 UI 测试,所以我知道它已经坏了,而不是在我们想要发布时手动修复脚本。所以我真的很想用某种方法让这个测试从一个干净的模拟器中通过。
有什么办法可以吗?
我有一个 VoIP 应用程序,它在入职过程中的某个地方会自行重置。因此,我第一次运行 UI 测试时它总是会失败,而第二次它总是会通过。
我使用这个 UI 测试来创建带有快照 (fastlane) 的屏幕截图,当然我可以告诉快照至少尝试两次。但是我也想在有人合并开发时运行这个 UI 测试,所以我知道它已经坏了,而不是在我们想要发布时手动修复脚本。所以我真的很想用某种方法让这个测试从一个干净的模拟器中通过。
有什么办法可以吗?
我终于想出了一个或多或少解决这个问题的方法。问题与应用程序的状态有关。您不能直接从 UI 测试影响应用程序,但可以设置一些变量。
XCUIApplication *app = [[XCUIApplication alloc] init];
[Snapshot setupSnapshot:app];
app.launchEnvironment = @{ SkipOnboarding: @YES };
[app launch];
NSDictionary *environment = NSProcessInfo.processInfo.environment;
if (environment[SkipOnboarding]) {
[SnapShotHelper skipOnboardingAndLogin];
}
SkipOnboarding
是我自己创建的一个常量。它实际上只是一个字符串。
快照助手设置了一些应用启动所需的默认值,就像用户已经登录一样。当然有一些警告:
但是由于我们没有对登录过程进行快照,所以很好。或者,如果需要,我们可以创建两个单独的 UI 测试。