【问题标题】:Can an XCTestRunner access View Controller properties of target application?XCTestRunner 可以访问目标应用程序的视图控制器属性吗?
【发布时间】:2018-07-22 16:32:14
【问题描述】:

我正在尝试使用 XCUITest 编写一些智能 UI 测试。现在我想构建一个测试套件,这样,根据我的应用程序 ViewController 我推断会发生什么类型的测试。例如,我有一个循环运行的猴子测试,在我的应用程序的某些视图控制器上,我想在全屏上点击,但是在其他视图控制器上,我只想在屏幕的一部分上点击,我用什么'已经看到 UI 测试被捆绑并在 UITestRunner 中运行,并且我正在测试的应用程序是目标应用程序,无论如何我可以访问目标应用程序的视图控制器的属性吗?

【问题讨论】:

    标签: ios xctest xcuitest


    【解决方案1】:

    不,您不能在运行时从 UI 测试代码访问视图控制器属性,因为 UI 测试运行器是应用程序的单独可执行文件(可以访问视图控制器)。

    UI 测试是用于在 UI 级别测试功能的高级集成测试。您只能通过触摸进行输入,只能通过 UI 接收输出。

    如果您需要测试需要访问视图控制器属性的内容,则需要使用单元测试。单元测试在与应用相同的可执行环境中运行,因此您可以访问已创建对象的特定属性。

    如果您想让 UI 测试以不同方式与不同页面交互,请考虑缩小可点击的可用元素列表,并通过查找每个页面独有的元素来识别特定页面以进一步过滤列表。查看the page object model,了解如何为多个页面扩展 UI 测试。

    【讨论】:

    • 你说:(可以访问视图控制器的地方),如何?
    • 我的意思是,如果您的测试与应用程序在 same 可执行文件中运行,例如单元测试,那么他们将有权访问视图控制器。
    【解决方案2】:

    您可以尝试“@testable import”来访问您的应用。但是在运行 XCUI 测试时,您可能永远无法获得对当前正在运行的应用程序的引用。

    您应该考虑编写将在应用程序上下文中运行的集成测试,然后您可以执行以下操作:

    @testable 导入

    让 win = UIApplication.shared.delegate?.window! 让 rootViewController = win?.rootViewController as 然后访问 rootViewController 并将操作发送到该特定控制器中定义的控制器和控件。 我们以这种方式编写大部分测试,这种方式更简单、更快、更可靠。

    有关详细信息,请参阅下面的快速文档。 https://github.com/Quick/Quick/blob/master/Documentation/en-us/TestingApps.md

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多