用基类编写干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的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

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

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

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

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