我希望我的应用程序在 UI 测试模式下运行时运行特殊代码(例如重置其状态)。我查看了应用程序从 UI 测试运行时设置的环境变量,并且没有任何明显的参数来区分正常运行的应用程序与 UI 测试中运行的应用程序。有办法找出来吗?
我不满意的两个解决方法是:
- Set
XCUIApplication.launchEnvironment
以及我稍后在应用程序中检查的一些变量。这不好,因为你必须将其设置为setUp
每个测试文件的方法。我尝试从方案设置中设置环境变量,但在运行 UI 测试时不会传播到应用程序本身。
- 检查环境变量是否存在
__XPC_DYLD_LIBRARY_PATH
。这看起来非常老套,并且可能现在才起作用,因为我们设置目标构建设置的方式巧合。
我自己一直在研究这个问题并遇到了这个问题。我最终选择了@LironYahdav 的第一个解决方法:
在您的 UI 测试中:
- (void)setUp
{
[super setUp];
XCUIApplication *app = [[XCUIApplication alloc] init];
app.launchEnvironment = @{@"isUITest": @YES};
[app launch];
}
在您的应用程序中:
NSDictionary *environment = [[NSProcessInfo processInfo] environment];
if (environment[@"isUITest"]) {
// Running in a UI test
}
@JoeMasilotti 的解决方案适用于unit测试,因为它们与正在测试的应用程序共享相同的运行时,但与 UI 测试无关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)