如何检测iOS应用程序是否正在UI测试模式下运行

2023-12-26

我希望我的应用程序在 UI 测试模式下运行时运行特殊代码(例如重置其状态)。我查看了应用程序从 UI 测试运行时设置的环境变量,并且没有任何明显的参数来区分正常运行的应用程序与 UI 测试中运行的应用程序。有办法找出来吗?

我不满意的两个解决方法是:

  1. Set XCUIApplication.launchEnvironment以及我稍后在应用程序中检查的一些变量。这不好,因为你必须将其设置为setUp每个测试文件的方法。我尝试从方案设置中设置环境变量,但在运行 UI 测试时不会传播到应用程序本身。
  2. 检查环境变量是否存在__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(使用前将#替换为@)

如何检测iOS应用程序是否正在UI测试模式下运行 的相关文章

随机推荐

  • GetSystemInfo 是否为您提供虚拟 CPU(即超线程)的总数?

    GetSystemInfo 将为您提供物理 CPU 核心的数量 但我想知道虚拟 CPU 的总数 IE 在新的 Nahelam 芯片上 它们有 4 个核心 但显示为 8 个 cpu 如果 GetSystemInfo 没有提供此信息 我需要什么
  • 如何使用 Storage Laravel 上传多个文件?

    现在我用一个简单的方法来上传图片 if request gt hasFile images file request gt file images Do uploading to Storage uploaded Storage put d
  • 如何在64位机器上不使用shell执行的情况下在C#中启动32位进程?

    我在 64 位计算机上有一个 ASP NET Web 应用程序 需要运行旧版 32 位报告应用程序 当我运行程序时UseShellExecute false 程序退出并退出代码 1073741502 我无法使用 Shell 执行 因为我必须
  • Keras 中具有多个输入/输出的 tf.data

    对于应用来说 比如配对文本相似度 输入数据类似于 pair 1 pair 2 在这些问题中 我们通常有多个输入数据 之前 我成功地实现了我的模型 model fit pair 1 pair 2 labels epochs 50 我决定用以下
  • 在 Qt 中扩展环境变量(getenv 等效)

    我正在寻找相当于getenv http www cplusplus com reference cstdlib getenv 功能 Qt 有一个包装器getenv 称为qgetenv http doc qt io qt 5 qtglobal
  • 如何将 key ctrl-left 绑定到 word-left?

    我使用 tcsh 和 emacs 在 emacs 中 我习惯使用 ctrl left 绑定键将我向左移动一个单词 我想在我的 tcsh 终端中做同样的事情 我可以按 ctrl b 但我只是不习惯 从bindkey manpath中我不清楚如
  • 标记和词位有什么区别?

    在 Aho Ullman 和 Sethi 的 Compiler Construction 一书中 给出了源程序的输入字符串被分成具有逻辑含义的字符序列 称为标记 而词位是组成标记的序列 所以什么是基本的区别吗 Using 编译器原理 技术和
  • or 运算符在这段 JavaScript 中起什么作用?

    因此 我浏览 JQuery 源代码以获取更好的编程技巧 并且发现了一些我不确定发生了什么的代码 type type callback 谁能解释一下 OR 是什么 变量赋值是做什么的 我做了一些实验 设置和取消设置值等等 但我一无所知 If
  • elasticsearch best_field 和most_field 有什么区别

    这篇文章我已经准备好了https www elastic co guide en elasticsearch reference current query dsl multi match query html https www elas
  • 如何使用 Sidekiq 运行连续后台作业?

    我一直在成功地使用 Sidekiq 来运行由 Rails 3 2 应用程序中的用户操作启动的后台作业 我的特定应用程序涉及通过第三方 API 从外部源发送和接收数据 我需要通过不断检查每个用户是否有数据可供下载来保持数据与此外部源同步 正如
  • 将一些代码从 C++ 转换为 C [重复]

    这个问题在这里已经有答案了 可能的重复 C 代码编译为 C 但不是 C https stackoverflow com questions 3143052 c code compiles as c but not as c Edit 我将库
  • 如何分割字符串同时忽略括号中的部分?

    我有一个字符串 我想使用逗号作为分隔符将其拆分为一个数组 我不希望括号之间的字符串部分被分割 即使它们包含逗号 例如 bibendum morbi non quam nec dui luctus rutrum nulla 应该变成 bibe
  • 使用javascript循环表并读取td内的值

    我有以下内容HTML我试图循环的表td s table thead tr th Product th th class currency Base Value th th class currency Unit Price th th cl
  • 这是 PostgreSQL SQL 引擎的错误吗?如何避免(解决方法)它?

    我正在解析文本文档并将它们插入到 PostgreSQL 数据库中 我的代码是用 Java 编写的 并且使用 JDBC 进行数据库连接 在将数据添加到数据库时 我遇到了非常奇怪的错误 似乎在不可预测的时刻 主循环的迭代次数不同 Postgre
  • Linux shell 脚本向文件名添加前导零

    我有一个包含大约 1 700 个文件的文件夹 他们的名字都像1 txt or 1497 txt等等 我想重命名所有文件 以便所有文件名都是四位数字长 I e 23 txt变成0023 txt 可以执行此操作的 shell 脚本是什么 或相关
  • doGet 方法在 tomcat 7 中运行的 servlet 中被调用两次,并使用 IntelliJ Idea 12 创建

    我创建了一个简单的 servlet 在 doGet 主体中只有一个 System out println 方法 但是当我使用 IntelliJ Idea 12 在 Tomcat 7 中运行它时 我收到一条消息 System out prin
  • 没有重复项或有序集的列表

    是否有一个库提供了一种数据结构 可以保留项目的顺序并且不包含任何重复项 这种数据结构是否存在合适的名称 我希望它的行为就像一个列表nub每次操作后应用 当然 我不希望它实施得那么无效 这是一种解决方案 Use a 手指树 http hack
  • ipywidgets.Textarea 中的等宽字体?

    我怎样才能让我的小部件使用等宽字体 from ipywidgets import Textarea Textarea The world is bigger than you 我想显示一些表格样式的数据 这也有效 from IPython
  • 如何在tkinter中绑定退格键删除多个字符?

    我想要创建绑定 让我可以根据变量按 Tab 键插入预定义数量的空格 然后按 Backspace 删除那么多空格 当用户按下退格键时 如何删除预定数量的空格 我不知道如何删除多个字符 当我尝试解决此问题时 绑定删除了错误数量的字符 这个问题有
  • 如何检测iOS应用程序是否正在UI测试模式下运行

    我希望我的应用程序在 UI 测试模式下运行时运行特殊代码 例如重置其状态 我查看了应用程序从 UI 测试运行时设置的环境变量 并且没有任何明显的参数来区分正常运行的应用程序与 UI 测试中运行的应用程序 有办法找出来吗 我不满意的两个解决方