ios - 将外部框架连接到 UI 单元测试目标,iOS

标签 ios objective-c xcode7 ui-testing xcode-ui-testing

所以,我手头已有项目,我正在尝试使用苹果提供的这个新的精美 UI 测试包来创​​建一些 UI 测试。问题是测试目标无法访问任何外部框架(我需要对其中之一进行一些设置)。在构建阶段添加框架和从主要目标应对框架搜索路径没有任何作用。

经过一天的浏览,我只发现了一件事,那就是“让事情有点不同”。通过将 Bundle Loader 和测试主机设置为 $(BUILT_PRODUCTS_DIR)/App.app/App ,我仍然无法将外部框架导入 test.m,但我可以导入为它们执行此操作的类自己。除非它没有破坏某些东西,否则一切都会很好而且花花公子。现在通过设置 Bundle 和 Host,我的 UI 测试无法执行启动方法:

[[[XCUIApplication alloc] init] launch];

它因错误而崩溃:断言失败:UI 测试失败 - 应用状态仍未终止。

最后我可以从设置中删除启动方法并手动触发每个测试,因此它每次在执行前都会重新启动应用程序,但这个解决方案似乎是错误的(尤其是对于一些更大的项目)。有谁知道处理这个问题的正确方法吗?

最佳答案

我为此所做的是向 XCUIApplication 添加一个环境变量以指定正在运行的 UI 测试。然后我在应用程序的主要部分对 #DEBUG 进行预处理器检查,然后检查是否设置了 test 环境变量;如果有,请执行 UI 测试的必要步骤。

从本质上讲,这将允许您根据需要如何配置您的应用程序以运行 UI 测试。这也意味着预处理器检查将完全删除发布版本的设置代码。

关于ios - 将外部框架连接到 UI 单元测试目标,iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31045668/

相关文章:

ios - SWRevealViewController 设置前端 VC Objective-C

iphone - 使用 AFNetworking 发布请求

ios - 为什么我的 iOS 应用程序中的函数会被调用两次?

objective-c - 如何在我的 iphone 应用程序中将所有信息容纳在一个表格单元格中?

objective-c - LSSharedFileListItemResolve 抛出 : "URLs with the type "nwnode :"are not supported"

ios - Xcode Swift 2 变量声明(实例成员不能用于类型 View Controller )

ios - 黄色警告 : Conditional cast from UITextDocumentProxy to UIKeyInput always succeeds

ios - watch 操作系统 : Should UI updates from the extension be called on the main thread?

ios - 更改 View 和设置标签会产生意想不到的后果

iOS self.window - 它是什么时候创建的?