Ios XCTestRunner能否访问目标应用程序的视图控制器属性?

Ios XCTestRunner能否访问目标应用程序的视图控制器属性?,ios,xctest,xcuitest,Ios,Xctest,Xcuitest,我正在尝试使用XCUIEST编写一些智能UI测试。现在,我想构建一个测试套件,以便根据我的应用程序ViewController推断发生的测试类型。例如,我有一个循环运行的monkey测试,在我的应用程序的一些视图控制器上,我希望在全屏上点击,但是在其他视图控制器上,我只希望在屏幕的一部分上点击,我看到的UI测试是绑定的,并在UITestRunner中运行,而我正在测试的应用程序是目标应用程序,我是否可以访问目标应用程序的视图控制器的属性 您可以尝试“@testable import”访问您的应用

我正在尝试使用XCUIEST编写一些智能UI测试。现在,我想构建一个测试套件,以便根据我的应用程序ViewController推断发生的测试类型。例如,我有一个循环运行的monkey测试,在我的应用程序的一些视图控制器上,我希望在全屏上点击,但是在其他视图控制器上,我只希望在屏幕的一部分上点击,我看到的UI测试是绑定的,并在UITestRunner中运行,而我正在测试的应用程序是目标应用程序,我是否可以访问目标应用程序的视图控制器的属性

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

你应该考虑的是编写集成测试,它将在应用程序上下文中运行,然后你可以做如下:

@可测试导入

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

有关更多详细信息,请参阅下面的快速文档。

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

你应该考虑的是编写集成测试,它将在应用程序上下文中运行,然后你可以做如下:

@可测试导入

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

有关更多详细信息,请参阅下面的快速文档。

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

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

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


如果要使UI测试与不同的页面进行不同的交互,请考虑缩小要点击的可用元素列表,并确定特定页面,通过查找每个页面特有的元素来进一步过滤列表。查看有关如何扩展多页UI测试的想法。

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

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

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


如果要使UI测试与不同的页面进行不同的交互,请考虑缩小要点击的可用元素列表,并确定特定页面,通过查找每个页面特有的元素来进一步过滤列表。查看有关如何将UI测试扩展到多个页面的想法。

您说:(可以访问视图控制器的地方),如何进行?我的意思是,如果您的测试与应用程序运行在同一个可执行文件中,如单元测试,则它们可以访问视图控制器。您说:(视图控制器可以访问的地方),如何访问?我的意思是,如果您的测试与应用程序运行在同一个可执行文件中,比如单元测试,那么它们可以访问视图控制器。