XCUITest 验证 ui 中断处理程序发生

     2023-02-24     52

关键词:

【中文标题】XCUITest 验证 ui 中断处理程序发生【英文标题】:XCUITest verify that ui interruption handler occurred 【发布时间】:2020-06-11 12:01:48 【问题描述】:

我对 swift 和 xcuitest 很陌生。我最近遇到了addUIInterruptionMonitor,用于处理可能弹出的警报。我想知道的是如何验证警报是否发生以及处理程序是否已处理。以以下为例

addUIInterruptionMonitorWithDescription("Location Services")  
  (alert) -> Bool in
  alert.buttons["Allow"].tap()
  return true


app.buttons["Request Location"].tap()
app.tap() // need to interact with the app again for the handler to fire
// after this if the handler never gets called I want the test to fail

我想测试警报是否真的发生,但据我了解,在我最后一次tap() 之后,如果警报从未被触发,我的处理程序将不会被调用。我需要测试警报是否真的发生了,然后可能会在处理程序的内容中添加一些断言

【问题讨论】:

【参考方案1】:

我似乎已经回答了我自己关于进一步调查的问题。对于使用 xcuitest 进行的异步测试,我可以使用 XCTestExpectation,它在创建时会导致测试等到期望得到满足,或者在某个超时后失败。这样我上面的代码就变成了:

let expectation = XCTestExpectation(description: "Location Service Alert")

let locationMonitorToken = addUIInterruptionMonitorWithDescription("Location Services")  
  (alert) -> Bool in
  alert.buttons["Allow"].tap()
  expectation.fulfill() // test waits for this before passing
  return true


app.buttons["Request Location"].tap()
app.tap() // alert triggered here
wait(for: [expectation], timeout: 3.0)
removeUIInterruptionMonitor(locationMonitorToken)

更新:触发警报后忘记输入wait(for: [expectation], timeout: 3.0) 以确保调用了处理程序。

【讨论】:

什么是中断系统

参考技术A问题一:什么是中断系统中断系统是计算机的重要组成部分。实时控制、故�自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。不同的计算机其硬件结构和软件... 查看详情

XCUITest:如何在使用 GraphQL 为应用程序创建 iOS UI 测试时设置特定状态?

】XCUITest:如何在使用GraphQL为应用程序创建iOSUI测试时设置特定状态?【英文标题】:XCUITest:HowtosetaspecificstatewhencreatingiOSUITestsforanappusingGraphQL?【发布时间】:2021-07-2018:48:17【问题描述】:我是iOS开发新手。我的问题是如何将数... 查看详情

单片机中断系统(代码片段)

中断系统的概念和基本结构中断发生:CPU正在处理某一程序时,发生了另一突发事件请求CPU迅速去处理;中断响应:CPU暂时停止当前的工作,转到需要处理的中断源的服务程序的入口,一般在入口处执行一跳转指令转去处理中断... 查看详情

iOS XCUITest 模拟指纹

】iOSXCUITest模拟指纹【英文标题】:iOSXCUITestsimulatefingerprint【发布时间】:2017-10-0420:46:18【问题描述】:我正在使用原生工具编写自动化UI测试。在一个流程中弹出指纹认证。我怎样才能通过它,前进到下一个屏幕?【问题讨论... 查看详情

verilog基础计算机体系架构cpu发生中断要做哪些事?什么是中断向量表?(面试常问)

总结下来就是三件事:保存现场、处理中断程序、恢复现场文章目录一、CPU发生中断要做哪些事?1、保存现场2、处理中断程序3、恢复现场二、什么是中断向量表?一、CPU发生中断要做哪些事?处理中断事件的程... 查看详情

XCUITest - 如何从 Google 移动广告 SDK 访问 WebView 屏幕上的 UI 元素

】XCUITest-如何从Google移动广告SDK访问WebView屏幕上的UI元素【英文标题】:XCUITest-HowtoaccessUIelementonWebViewscreenfromGoogleMobileAdsSDK【发布时间】:2020-06-1815:06:24【问题描述】:我正在使用XCUITest进行UI测试自动化,大多数应用程序都是... 查看详情

中断和异常

中断和异常中断机制的诞生缺点:各程序只能串行执行,系统资源利用率低为了解决上述问题,人们发明了操作系统,引入中断机制,实现了多道程序并发执行。本质:发生中断就意味着需要操作系统介入,开展管理工作中断的... 查看详情

linux中断处理总结(代码片段)

ARM64中断处理过程:https://www.daodaodao123.com/?p=146上文总结了ARM64裸机中断处理的详细过程,这里主要总结下linux中断处理相关内容;0.为什么有中断?中断,本质上是外设发生了事变,需要异步的通知(经由中断控制器,路由给)CP... 查看详情

中断向量是指啥?

概念介绍中断标识码(中断类型号):由硬件(通常是中断控制器)产生,以标识不同的中断源。中断向量:中断服务程序的入口地址。在某些计算机中,中断向量的位置存放一条跳转到中断服务程序入口地址的跳转指令。中断... 查看详情

并发编程练习

1、简述计算机操作系统中的“中断”的作用?计算机操作系统的中断的作用:cpu会切:io阻塞,程序运行时间过长中断:计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得cpu暂时中断当前正在执行的程序... 查看详情

什么是中断?

什么是中断?中断的意思如下:1、中断,是一种法律法规术语,是指在诉讼时效期间进行中,因发生一定的法定事由,致使已经经过的时效期间统归无效,待时效中断的事由消除后,诉讼时效期间重新起算。2、中断是指计算机运... 查看详情

UITest 中断处理程序调用 tap() 两次

】UITest中断处理程序调用tap()两次【英文标题】:UITestinterruptionhandlercallingtap()twice【发布时间】:2019-11-2112:38:10【问题描述】:我的UITest需要点击一个按钮,并且UIInteruptionMonitor应该处理它。但是,发生的情况是按钮被点击,中... 查看详情

risc处理器设计------中断的设计

中断是将正常的指令流运行过程转向中断服务程序。在中断处理完之后,处理器返回到原来运行的程序。处理器状态包括寄存器状态和程序流返回地址,他们保存在特殊寄存器和通用寄存器的R28~R31中。所以有两套额外的寄存器... 查看详情

中断向量是啥意思

参考技术A中断:计算机在执行一些程序时,为了执行另外的一些程序,或者发生了不可阻止的错误,就会发生中断.中断是一种计算机的行为,在具体硬件上表现为电平的变化.中断向量:计算机发生中断时各个寄存器和程序计数器所指向... 查看详情

第四模块练习(代码片段)

1、简述计算机操作系统中的“中断”作用?中断装置由一些特定的寄存器和控制线路组成,中央处理器和外围设备等识别到的事件保存在特定的寄存器中。中央处理器每执行完一条指令,均由中断装置判别是否有事件发生。若... 查看详情

arm中断深入分析几点

ARM中断深入分析几点1.程序发生中断后,是如何跳转到中断程序里面的?2.执行完中断后,如何返回到原来被打断的地方接着执行呢?3.ARM处理器的流水线结构对中断返回地址的计算有什么影响?4.ARM7,ARM9处理器流水线结构一个... 查看详情

12.中断(代码片段)

中断介绍中断就是当CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完... 查看详情

x86汇编7.内部中断

...的扩充等方面有所不同,对于学习,8086永不过时。依据中断来源,中断可以分为内部中断,和外部中断。1.内部中断的产生当CPU发生下列事情后,会产生中断:(1)除法错误,中断号:0(2)单步执行,中断号:1(3)执行info指... 查看详情