我正在考虑使用 XCUITest 为我的 iOS 应用程序进行 UI 测试。看起来 XCUITest 具有广泛的功能,包括使用多个应用程序的能力。然而,多应用程序支持似乎有些有限。
似乎使用 XCUIApplication 我可以使用 Bundle ID 启动另一个应用程序,甚至监视其状态。但是,我想要做的是能够对两个具有紧密交互的应用程序运行协调测试(例如,一个应用程序向另一个应用程序打开 URL,执行一些 UI 操作,然后返回到第一个应用程序)。
仅使用 XCUITest 就可以做到这一点,还是我需要一些更高级别的工具? (我认为存在一些工具可以做到这一点,但如果可能的话更愿意使用 XCUITest)
理想情况下,我会将所有代码放在一个文件中,以执行两个应用程序中的 UI 操作。但如果这是不可能的,我愿意编写单独的测试应用程序,这些应用程序有效地相互切换,在“轮到”时执行操作。但我不确定如何协调这两个测试应用程序。
实际上,Xcode 9 对此提供了很好的支持。设置方法如下:
我发现最简单的方法是创建一个包含两个应用程序的工作区。在包含用于练习这两个应用程序的 UI 测试代码的应用程序项目中,确保这两个应用程序都列在 UI 测试目标的“目标依赖项”下:
现在只需在测试的设置函数中使用它们的包标识符启动这两个应用程序即可:
app1 = XCUIApplication(bundleIdentifier: "no.terje.app1.App1")
app1.launch()
app2 = XCUIApplication(bundleIdentifier: "no.terje.app2.App2")
app2.launch()
(这些应用程序是我的测试类的实例成员,var app1: XCUIApplication!
)
现在你已经准备好了。对两个应用程序运行测试,如下所示:
func testButtonsExist() {
app1.activate()
app1.buttons["mybutton"].exists
app2.activate()
app2.buttons["myotherbutton"].exists
}
至于您提到的等待或异步挑战:我想其中大部分也存在于单个应用程序中的异步代码中,例如等待 URL 打开。但是,如果您遇到特定问题,请发布您正在尝试但失败的具体事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)