用基类编写干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)

从如下链接中下载轴承数据集。 https://www.sciencedirect.com/science/article/pii/S2352340918314124 import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltimport statistics as statsimport pandas

BD错误集锦8——在集成Spring MVC + MyBtis编写mapper文件时需要注意格式 You have an error in your SQL syntax

报错的文件 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.yuan.dao.YuanUserDao"><!

如何利用echarts编写立体的柱状图表

1、引入 import * as echarts from 'echarts' 2、创建图标容器 3、调用渲染 <template><div ref="eachrtsBox" style="width: 200px;height: 200px;"></div></template><script>import * as echarts from 'echarts'export d

编译测试后出现“发现不明确的匹配”错误

原文链接:http://blog.163.com/zhaoyanping_1125/blog/static/201329153201204218533/ 错误提示: 【“/”应用程序中的服务器错误。  分析器错误 说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。  分析器错误信息: 发现不明确的匹配。】   这个问题发生原因一般情况是

RODNet安装测试

项⽬地址: GitHub - yizhou-wang/RODNet: RODNet: Radar object detection network 搭建环境并配置RODNet 1. 参考README.md搭建并配置环境 准备数据集 1. 本实验使⽤ ROD2021 dataset. 百度⽹盘链接:百度网盘 请输入提取码 密码:slxy 2. 使⽤这个script来重新组织文件。 具体形

Mockito测试

Mockito 一 mockito基本概念 Mock测试是单元测试的重要方法之一,而Mockito作为一个流行的Mock框架,简单易学,且有非常简洁的API,测试代码的可读性很高。 Mock测试就是在测试过程中,对于一些不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者说获取比较复杂的对象(如JDBC中的ResultSet对象)

jmeter测试https请求

公司最近在搞全站HTTPS改造,进一步提高网站的安全性,防止运营商劫持。那么,改造完成后,所有前后端的URL将全部为https。 So ,研究下怎么用Jmeter访问https请求呢。 其实很简单, 第一步在jmeter中创建HTTP请求,如下图进行配置,https端口为443; 第二步,在本机浏览器,如Chrome中导入该域名证书,在更多工具-设置-管理证书的地方,找到该证书,导出到本地。然后在

ssh在本地虚拟机中的应用——解决虚拟机中编写和阅读代码不方便问题的一个小技巧

虚拟机中编程小技巧分享——ssh的使用 事情的起因是这样的:前几天一位工程师过来我这边,他看到我在主机和虚拟机运行了两个vscode环境,不经意间提了句:“这么艰苦的环境写代码啊”。 后来我一想:确实。 我长时间以来都是直接在虚拟机里写的代码,但是毕竟是虚拟机嘛,有时候编辑器没那么流畅,在文件比较多的时候跳转很麻烦,容易卡住。因此,我当晚简单思考了一下,想到了一个可行的解决方法——即用ssh

简单 使用 的makefile编写 框架

1、指定编译器,如海思平台:CROSS_COMPILE=arm-hisiv100nptl-linux-; 2、指定编译工具:GCC=$(CROSS_COMPILE)gcc   CC=$(CROSS_COMPILE)g++; 3、使用 export 导出 子makefile 要用的变量; 4、定义变量的形式  指定 工程源文件 需要使用到的 “宏”,在后面的 LDFLAGS 里面使用 -D将其

pytest测试框架flaky插件重试失败用例

Pytest提供了丰富的插件来扩展其功能,本章介绍下插件flaky ,用于在测试用例失败时自动重新运行这些测试用例。与前面文章介绍的插件pytest-rerunfailures功能有些类似,但是功能上不如pytest-rerunfailures插件丰富。 flaky官方并没有明确python和pytest版本限制。 flaky安装 使用pip命令安装: pip install flaky