【发布时间】:2017-03-27 07:44:09
【问题描述】:
在问这个问题之前,我应该说一下。我对 Xcode 中 UI 测试的理解:
- UI 测试仅用于自动化 UI 工作流程
- 最终用户无法访问原始源。同理,UI Tests 也无法访问应用的源代码
- 在 UI 测试用例中只能访问元素属性/标识符。
我的场景:
我想在我的 UI 测试用例的源代码中调用视图控制器(例如 MyVC.h/MyVC.m)中的一个方法(例如 myMethod())。
注意:我的源代码是用 Objective C 编写的,我正在用 Swift 编写测试用例。
据我了解,要做到这一点,我也应该在 UITest 目标中添加MyVC.m(我们不能将 .h 添加到目标中)。然后我需要在我的 UITest 桥接文件中导入MyVC.h。然后我可以像这样从 UITest 调用myMethod():
MyVC.myMethod()
它会起作用的!
问题:
大多数类实时使用 Util 类、常量文件(头文件)、从 .pch 文件导入的类、共享管理器等。
如果MyVC是一个独立的类,意味着不使用上述任何一个类,我可以毫无问题地访问myMethod()。
但是,如果MyVC 间接使用这些类,则运行 UITest 会在所有源代码中显示缺少头文件错误。
我尝试了什么:
- 为了解决这个问题,我通过将所有源文件添加到 UI 目标中进行了测试。仍然会发生这些问题。由于我无法添加 .h 文件
- 我创建了单元测试类,我可以在其中调用任何类的方法(因为单元测试类有一个选项“允许测试主机应用程序 API”)。然后我尝试从 UI 测试用例访问单元测试用例。在这里,每个文件中也会发生相同的错误。
问题:
我应该在主源的所有文件中添加所有需要的文件头吗?
有人遇到过这种错误吗?有没有人通过 UI 测试完成 DB 访问?
【问题讨论】:
-
您为什么要从 UI 测试访问应用程序代码?你的测试场景是什么?
标签: unit-testing methods xctest xcode-ui-testing