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

相关文章

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat