React-Native移动应用自动化测试框架Detox简介

2023-10-12 23:30

本文主要是介绍React-Native移动应用自动化测试框架Detox简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

经过开发的鼎力相助,终于把RN的自动化测试框架研究通过了,目前环境已搭建并结合APP运行第一个Demo成功了。

1框架介绍(Detox)

https://github.com/wix/detox

它是为移动端APP打造的灰盒端到端自动化测试框架。

可用于React-Native开发的APP,使用js测试框架test或mocha来执行相应的测试脚本。通过对RN程序包中package.json增加Detox相关配置,并在RN程序包中增加测试案例文件夹e2e(在其中增加测试案例)实现测试用例的编写和执行。

 

 

2环境搭建 (以下以在ios中运行自动化测试案例为例)

2.1环境准备:

Mac with macOS (macOS El Capitan 10.11以上)

Xcode 8.3+ with Xcode command line tools

一个需要被测试正在使用的 React Native app

 

2.2 安装步骤:

2.2.1 安装依赖

2.2.1.1 安装最新版本的homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 

2.2.1.2 安装Node.js

 

brew update && brew install node

2.2.1.3 安装applesimutils

brew tap wix/brew

 

brew install applesimutils

 

使用applesimutils来完成调用Xcode中运行的IOS模拟器,所以前提是必须先在Xcode中将模拟器调起。

 

2.2.1.4 安装detox-cli

 

npm install -g detox-cli

 

2.2.1.5 安装 react-native-cli

npm install -g react-native-cli

2.2.1.6 安装

 

2.2.2 安装用例运行框架(Mocha或Jest,都是js测试框架,目前使用的是前者)

 

2.2.2.1 安装jest工具(以下演示以jest为例)

npm install jest --save-dev

 

2.2.2.2 安装mocha工具

 

npm install mocha --save-dev

 

 

2.2.3 安装Detox到项目

若你的项目是RN项目,则可以使用如下口令完成Detox安装:

 

npm install detox --save-dev

 

若为原生安卓或IOS的项目,则需要在项目目录下的packages.json更新如下内容换句话说也支持安卓和IOS项目的自动化测试

{

  "name": "<your_project_name>",

  "version": "0.0.1"

}

然后再安装Detox

npm install detox --save-dev

 

 

3 更新配置文件package.json

需要更新项目根目录下的package.json,把如下代码插入其中。

"detox": {

  "configurations": {

    "ios.sim.debug": {

      "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/example.app",

      "build": "xcodebuild -project ios/example.xcodeproj -scheme example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",

      "type": "ios.simulator",

      "name": "iPhone 7"

    }

  }

}

在如上代码中,得把example使用实际的项目名称(这里是ClaimPlatform_RN)替代,见下图。

,在binaryPath中

example.app也应被ClaimPlatform_RN.app替代。在bulid这项中example.xcodeproj也被做相应的替代,变成ClaimPlatform_RN.xcodeproj,-scheme example变成 -scheme ClaimPlatform_RN

如果IOS的app咋workspace文件夹中,则得使用 use -workspace ios/example.xcworkspace 来代替项目,变成 use -workspace ios/laimPlatform_RN.xcworkspace instead of -project

确保配置文件中的模拟器是已经被安装并处于可用状态(如以上配置中的iphone7 是否可以被Xcode调起)。亦可通过xcrun simctl口令检查可使用的模拟器是否包含配置中的模拟器。

附修改后package.json的detox配置(只包含了IOS的,也可补充Android的):

"detox": {

    "test-runner": "jest",

    "specs": "e2e",

    "configurations": {

      "ios.sim.release": {

      "binaryPath":"ios/build/Build/Products/Debug-iphonesimulator/ClaimPlatform_RN.app",

        "build": "export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -workspace ios/ClaimPlatform_RN.xcworkspace -scheme ClaimPlatform_RN -configuration Release -sdk iphonesimulator -derivedDataPath ios/build -quiet",

        "type": "ios.simulator",

        "name": "iPhone 7"

      },

      "ios.sim.debug": {

        "binaryPath":"ios/build/Build/Products/Debug-iphonesimulator/ClaimPlatform_RN.app",

        "build": "xcodebuild -workspace ios/ClaimPlatform_RN.xcworkspace -scheme ClaimPlatform_RN -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",

        "type": "ios.simulator",

        "name": "iPhone 7"

      }

    }

  },

 

Plus:在MAC环境中执行用例前,必须先通过Xcode调起该模拟器

 

4 编写用例

4.1 构建用例文件夹

若选中mocha做为测试框架,则需要输入如下口令即可在项目当前根目录下

自动生成e2e文件夹,并完成对mocha运行的简单配置。

detox init -r mocha

同理,选用jest,则执行如下口令:

detox init -r jest

 

4.2 编写用例

     开始编写第一个演示Demo,这里以RN的 APP首页上的输入手机号码定位为例子。4.2.1 前期准备:需要在前端代码中给该输入文本框元素增加一个全局定位属性testID,见下

 

4.2.2 编写用例

以打开IOS的APP找到首页上的手机号输入框为例。describe相当于testsuit,后面跟的是testsuit名称(建议与项目名称一致);it相当于testcase,后面跟的是testcase名称。具体用例见下图。

 

 

 

构建APP并执行用例

5.1 构建APP

detox build --configuration ios.sim.debug (debug模式)

detox build --configuration ios.sim.release (release模式)

5.2 执行用例

detox test --configuration ios.sim.debug (debug模式)

detox test --configuration ios.sim.release (release模式)

这篇关于React-Native移动应用自动化测试框架Detox简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

性能测试介绍

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

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

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

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

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

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

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

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

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

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