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

Big*_*Szu 24 objective-c ui-testing ios xcode7 xcode-ui-testing

所以,我已经掌握了现有的项目,并且我正在尝试使用apple提供的这个新的花哨UI测试包来创​​建一些UI测试.问题是测试目标无法访问任何外部框架(我需要使用其中一个进行一些设置).在构建阶段添加框架和从主目标中复制框架搜索路径不会做任何事情.

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

[[[XCUIApplication alloc] init] launch];
Run Code Online (Sandbox Code Playgroud)

它崩溃并出现错误:断言失败:UI测试失败 - 应用程序状态仍未终止.

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

Har*_*rry 1

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

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