【问题标题】:XCTest Fresh install app in a UITestXCTest 在 UITest 中全新安装应用程序
【发布时间】:2017-10-23 21:55:48
【问题描述】:

从 Xcode 9 开始,有一个新的启动参数 -StartFromCleanState 我假设在全新安装后启动应用程序。但是它似乎不起作用,谷歌搜索 -StartFromCleanState 没有产生任何结果,所以没有文档可以关闭。

source

我的目标是使用深层链接启动我的应用。我的测试流程是这样的:

  1. UITest 从启动应用开始
  2. UITest 打开 safari
  3. UITest进入有deeplink链接的网页
  4. UITest 点击链接,应用打开

Step for 通过将应用从后台状态切换到前台状态来打开应用。这意味着 application:didFinishLaunchingWithOptions: 仅在第 1 步被调用一次。

func test_deeplink() {
    programmaticallyTapDeepLink()
    XCUIApplication().launchArguments = ["-StartFromCleanState", "YES"]
}

理想情况下,我想在应用全新/干净安装时测试深层链接。

我尝试在以编程方式点击深度链接之前/之后设置启动参数,但它似乎没有按我希望的方式工作。

有没有可用的解决方案?

【问题讨论】:

    标签: ios xcode xcode9 uitest


    【解决方案1】:

    在您指定为源的文档中,作者提供了示例代码:

    XCTContext.runActivity(named: "Given I have launched app in clean state") { _ in {
        XCUIApplication().launch()
        XCUIApplication().launchArguments = ["-StartFromCleanState", "YES"]
    }}
    

    -StartFromCleanState 不是“新的启动参数”。它是提供给 XCUIApplication().launchArguments 方法的键和值,由被测应用程序 (XCUIApplication) 的开发人员来处理传递的启动参数 (["-StartFromCleanState", "YES"])。

    这个堆栈溢出答案有一些例子:

    您可能还想考虑阅读 userDefaults;您可能希望根据以下两种生命周期方法之一中传递的 launchArguments 触发对它们的重置:

    发射时间:

    application(_:willFinishLaunchingWithOptions:)
    application(_:didFinishLaunchingWithOptions:)
    

    有关应用程序生命周期状态和每个状态期间可用的委托方法的更多信息,请参阅此苹果文档:

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多