用基类编写干XCUITest测试

2024-04-30 13:32
文章标签 编写 测试 基类 xcuitest

本文主要是介绍用基类编写干XCUITest测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在我们在设置XCUITest框架时,我们用Xcode 10建立并运行了一个示例XCUITest。Apple的XCUITest框架使我们能够记录基本的用户行程,从而开始使用XCUITest,但是所记录的测试不具有可伸缩性和可重用性。我们必须努力提高XCUITest的可读性、可伸缩性、可维护性和可重用性。

按照上一篇文章中提到的方法,我们可以添加更多的UI测试,但是会有大量的代码重复,这会使我们的UI测试很难维护和修复。编写自动化测试非常容易,但随着项目的规模和复杂性的增加,编写可靠的测试更加困难。有各种测试方法和测试模式可用于使测试具有可伸缩性。在这篇文章中,我们将介绍如何通过抽象基类中常见的SWIFT代码使XCUITest测试变得健壮。

为XCUITest测试创建一个基类

大多数测试框架使用基类抽象测试类的公共功能。简而言之,基类是为测试类提供公共功能的超类。在我们Xcode项目,我们有一个ui测试类。XCUITest101UITests.swift在一个类中使用所有的方法,比如安装、解压缩和测试方法。如果我们想要添加新的XCUITest测试,那么我们必须重复每个测试类的设置和拆卸方法。显然,这将在我们的IOS项目中创建大量重复的代码,这使得以后很难维护,并且可能会延长您在移动设备云上的测试执行时间。为了避免这种情况,让我们从Xcode->File->New->File->Swift File->Next并将文件命名为XCUITestBase,并确保为该文件选择了目标XCUITest101UITest。

这将创建一个新文件。XCUITestBase.swift在UI测试目标下,我们可以抽象出通用代码。

通用测试工作流

现在我们已经为XCUITest创建了基类,我们可以考虑我们可以在基类中包含的常见和重复的代码。查看我们现有的测试类,我们可以在基类中抽象如下内容:

  • 设置和测试方法
  • 的实例XCUIApplication()这在以后的测试中可能需要。

这两个是非常明显的东西,我们必须抽象化,以便以后再使用。然而,随着项目和测试套件的增长,将来可能需要抽象更多的通用工作流。在编写XCUITest测试时,必须在能够可靠运行测试的状态下配置我们的应用程序。苹果提供了启动参数和发射环境传递给每个测试类。配置从基类添加启动参数的能力是有意义的。一个很好的例子是,当我们希望使用启动参数从干净的状态启动每个测试时。

XCUIApplication().launchArguments = ["-StartFromCleanState", "YES"]

这是一个启动参数的例子,但是您可以传递由IOS开发人员创建的任何参数或环境。我们可以在基类中配置它,还可以将基类扩展到XCTestCase班级,等级最后,我们XCUITestBase类看起来像这,这个:

现在我们已经创建了基类,接下来的任务是修改我们的测试。到基类的子类,并使用来自超类的常用方法。

重构UI测试以使用基类

为了重构我们的原著,我们可以采取以下几项行动:

  • 我们不需要记录测试,所以,首先,让我们去掉testRecorded()我们班的考试。
  • 接下来,我们可以重命名我们的测试方法。testRefactored()用更明智的方法。在验证欢迎消息时,让我们将这个测试重命名为testWelcomeMessage()
  • 我们必须将测试的超类替换为XCTestCaseXCUITestBase这样我们就可以使用基类中的所有公共工作流。
  • 替换XCUIApplication()app从基类。

完成上述步骤后,我们的测试类将如下所示这,这个:

现在我们的测试类看起来好多了,更整洁了。通过使用基类,我们将30+行的源代码减少到了8行。如果使用CMD+U关键,你会看到我们的测试仍然通过,没有任何问题。您可以从调试区,它通常是用CMD+Shift+C(⇧⌘C)在Xcode 10中输入键。在我们的测试中,当测试在模拟器中运行时,日志如下所示:

最后,您可以看到测试将断言欢迎消息并通过。

你自己试试看

本教程的源代码可在baseclass支部这里。您可以自己下载源代码并在Xcode 10中运行测试。在命令行中,您可以获得如下源代码:

 $ git clone https://github.com/Shashikant86/XCUITest101
 $ cd XCUITest101
 $ git checkout baseclass
 $ open XCUITest101.xcodeproj/

项目在Xcode 10中打开后,请按CMD+U运行XCUITest。

结语

在这篇文章中,我们抽象了基类中XCUITest的通用代码,以避免重复。然而,要使我们的测试具有可伸缩性和真正的可重用性,仍然需要很多改进。我们将在即将发布的文章中将SWIFT最好的测试模式应用于我们的XCUITest。请继续关注。

这篇关于用基类编写干XCUITest测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948999

相关文章

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采