我想使用快车道快照,以便为我的应用程序生成截图。但是,当第一次发布和发布之后,应用程序的行为是不同的。我怎样才能得到一致的行为来获取截图呢?(这个问题也适用于任何UI测试所期望的一致性)
发布于 2017-12-06 15:32:28
您应该使用UserDefaults类来保存应用程序中的数据,以便在测试中对数据进行存根。
如果我们假设用于查看它是否是第一次启动的Bool键是isFirstTime,为了在您的UI测试中对其进行存根处理,您应该将它传递到launchArguments后面的值YES或NO (对于Bool值)。注意,我在键之前添加了-签名,这就是它的工作方式:
class FirstTimeLaunchTest: XCTestCase {
let app = XCUIApplication()
override func setUp() {
super.setUp()
continueAfterFailure = false
app.launchArguments += ["-isFirstTime", "YES"]
app.launch()
}
func testWelcomeScreenShown() {
XCTAssert(app.navigationBars["Welcome"].exists)
}
}对于希望跳过第一次开始的测试,请使用以下类:
class LaterLaunchesTest: XCTestCase {
let app = XCUIApplication()
override func setUp() {
super.setUp()
continueAfterFailure = false
app.launchArguments += ["-isFirstTime", "NO"]
app.launch()
}
func testMainAppScreenShown() {
XCTAssert(app.navigationBars["My App"].exists)
}
}不过,有一个注意事项:如果您正在使用SwiftyUserDefaults库,则此解决方案将无法工作。当前版本的库中存在一个问题,即将YES和NO字符串转换为true和false不像预期的那样工作。有一个按下解决了这个问题(被拒绝了),但是要解决这个问题,您可以查看这个答案的解决方案#2和#3。
https://stackoverflow.com/questions/47675245
复制相似问题