use*_*759 24 ios swift xcode-ui-testing
我正在开发一个iOS项目,我需要从UI测试目标访问主机应用程序的代码,但我发现它显示链接错误:我尝试时未定义的符号.我发现这个目标的测试主机和捆绑加载器都是空的,所以我将它们设置为我的主机应用程序并且可以通过链接错误.但是,在运行时,调用XCUIApplication.launch()时仍然会失败.有没有人想出如何从这个UI测试目标访问主机应用程序的代码?如果不能这样做,我们就不得不进行所有UI测试,这是非常不稳定的.我们肯定需要在测试场景中使用非UI步骤.我正在使用Swift作为我的项目.
kub*_*ubi 39
在运行UI测试之前,我使用以下技术在我的应用程序中设置值.用于设置默认值或打开网络模拟等.在大多数情况下,我还不需要从应用程序中读取任何内容.一切都反映在UI中,可以通过这种方式进行测试.很快我们将添加测试以确保应用程序进行某些网络呼叫.我还不确定我们将如何在UI测试用例中测试它.
let app = XCUIApplication()
app.launchArguments = ["ResetDefaults", "NoAnimations", "UserHasRegistered"]
app.launch()
Run Code Online (Sandbox Code Playgroud)
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
var arguments = NSProcessInfo.processInfo().arguments
arguments.removeFirst()
print("App launching with the following arguments: \(arguments)")
// Always clear the defaults first
if arguments.contains("ResetDefaults") {
destroyUserDefaults()
clearKeychain()
}
for argument in arguments {
switch argument {
case "NoAnimations":
UIView.setAnimationsEnabled(false)
case "UserHasRegistered":
Defaults.userRegistered = true
default:
break
}
}
}
Run Code Online (Sandbox Code Playgroud)
额外的好处:如果你使用启动参数来配置你的应用程序,那么为你的Xcode方案添加标志是微不足道的.例如,我有一个清除所有存储数据的方案,并使用成功响应存根任何登录尝试.我现在可以通过模拟器"登录"而无需点击任何服务器.
使用Apple在WWDC 15中引入的新UI自动化框架,无法从UI-Automation测试访问您的应用程序代码.它的目的是模拟用户可以访问的内容,这有时令人沮丧.
| 归档时间: |
|
| 查看次数: |
5424 次 |
| 最近记录: |