Xcode UI 测试:如何测试应用程序的首次启动
Posted
技术标签:
【中文标题】Xcode UI 测试:如何测试应用程序的首次启动【英文标题】:Xcode UI Testing: how to test app's first launching 【发布时间】:2015-11-05 12:55:35 【问题描述】:我正在 xCode 7.1 中编写 UITests,并且有一个在首次启动期间测试应用程序的功能。问题是:如何检查应用程序是否第一次启动。 我需要这样的东西:
func testFirstLaunching()
if ("app is launched for the first time")
//test scenario of first launching
else
//invoke func that will test other scenario
有人知道如何检查这个吗? 应用正在使用 NSUserDefaults,也许 Xcode 测试有一个超级强大的功能可以访问它?
任何建议都会很有价值!)
【问题讨论】:
我知道你可以做这样的 if 语句。问题是在 if 块中放什么。也许您可以检查是否存在导航栏标题。 ``` if (app.staticTexts["My Main Screen"].exists) 做普通的应用程序 else 假设你是第一次启动 ``` 不错的想法,我尝试了这种方法,但在我的情况下,问题是登录窗口后出现导航标题(通过网络登录,所以这会导致一些延迟),所以要检查导航标题 waitForExpectationsWithTimeout(timeout)功能是必需的,如果它是第一次启动 - 出现一个窗口(一个导航标题),如果它不是第一次启动 - 另一个窗口出现(所以我们有不同的静态文本)。所以超时测试失败后,如果它没有找到正确的标题(问题是标题不同)。 【参考方案1】:这里是您的问题的手动解决方案:
-
在第一个呈现的 ViewController 中创建一个全局变量,将其设为 false
在您的 viewDidLoad 中,将其值更改为 true
保存
在
testFirstLaunching()
中,读取变量的值
使用 if 语句做任何你想做的事
希望这会有所帮助:)
【讨论】:
这是正确的思维方式,但我可以用同样的方式阅读 NSUserDefaults。问题是如何通过 XCTestCase 类对象或通过 XCUIApplication() 访问它(或 ViewController 中的全局变量)?) 访问什么?你的意思是你想访问每个 VC 是否至少打开过一次应用程序? 嗨,Linus,您能告诉我们更多关于如何从测试代码中检查变量的信息吗?XCUIApplication
有办法读取用户默认值吗?
我是如何解决这个问题的:我在我的应用程序的特殊 Settings 类中使用了 global var isFirstRun (实际上类似于@Linus G.建议,所以你的答案被接受了:))。误解的原因是未选中 Settings 类中的 AppUITests 目标(实用程序窗格中的目标成员资格窗口),因此 AppUITests无法访问该类中的变量> 类。我的错误,问题的重要原因和其他开发人员的良好经验。
哦,好的,很高兴听到你成功了 :)以上是关于Xcode UI 测试:如何测试应用程序的首次启动的主要内容,如果未能解决你的问题,请参考以下文章