在使用XCTest编写UI测试后,我尝试在模拟器的“设置”应用中尝试更改构建指向的服务器。这样就可以在正确的地方进行自动化测试。有没有办法用可访问性和UI测试代码来做到这一点?
编辑:@oletha的答案是完美的。这是我在Objective-C中使用的解决方案:
我将启动参数设置为configServer=@"URL"
for (NSString *launchArgument in [[NSProcessInfo processInfo] arguments]) { if ([launchArgument hasPrefix:@"configServer"]) { return [launchArgument componentsSeparatedByString:@"="].lastObject; } }
答案 0 :(得分:1)
您可以在启动应用之前通过设置launchArguments
属性向应用发送启动参数。然后,您可以将应用程序设置为在启动期间读取启动参数,并在使用该启动参数启动时设置模拟服务器的URL。
// test code
let app = XCUIApplication()
app.launchArguments = ["UITESTS"]
app.launch()
// app code
if NSProcessInfo.processInfo().arguments.contains("UITESTS") {
// set different server URL
}
您可能希望在应用代表的applicationDidFinishLaunching
中添加网址切换代码。
答案 1 :(得分:0)
根据Xcode 8.2,您无法在自己应用的目标之外自动化UI,因此您无法与设备上的“设置”应用进行互动。我觉得这是一个错误并提交了一个雷达(http://www.openradar.me/27802551),你可能也想这样做。
我想您尝试更改的网址会存储在您的偏好设置中的某个位置。如果是这种情况,您可以在使用SBTUITestTunnel执行测试期间动态更改它。这是第三方库,允许通过UI测试与您的应用程序进行交互,实现网络模拟和监控,数据注入等。对于您的用例,它可以轻松更新NSUserDefaults
。