首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分用户界面测试的第一次发布

区分用户界面测试的第一次发布
EN

Stack Overflow用户
提问于 2017-12-06 13:16:36
回答 1查看 333关注 0票数 0

我想使用快车道快照,以便为我的应用程序生成截图。但是,当第一次发布和发布之后,应用程序的行为是不同的。我怎样才能得到一致的行为来获取截图呢?(这个问题也适用于任何UI测试所期望的一致性)

EN

回答 1

Stack Overflow用户

发布于 2017-12-06 15:32:28

您应该使用UserDefaults类来保存应用程序中的数据,以便在测试中对数据进行存根。

如果我们假设用于查看它是否是第一次启动的Bool键是isFirstTime,为了在您的UI测试中对其进行存根处理,您应该将它传递到launchArguments后面的值YESNO (对于Bool值)。注意,我在键之前添加了-签名,这就是它的工作方式:

代码语言:javascript
复制
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)
    }
}

对于希望跳过第一次开始的测试,请使用以下类:

代码语言:javascript
复制
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库,则此解决方案将无法工作。当前版本的库中存在一个问题,即将YESNO字符串转换为truefalse不像预期的那样工作。有一个按下解决了这个问题(被拒绝了),但是要解决这个问题,您可以查看这个答案的解决方案#2和#3。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47675245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档