使用 Jest 在 Visual Studio Code 中进行更好的单元测试

news2024/11/13 15:18:49

目录

前言:

使用 Jest 扩展显著改善测试流程

1.自动启动 Jest 测试

2. 显示单个失败/通过的测试用例

允许调试单元测试

在文件中显示代码覆盖率

结论


前言:

Jest是一个流行的JavaScript测试框架,它提供了简洁、灵活和强大的工具来编写和运行单元测试。在Visual Studio Code(VS Code)中使用Jest可以进一步提升单元测试的效率和体验。

使用 Jest 扩展显著改善测试流程

  我用 Jest 编写单元测试已经有 5-6 年了。 它总是能够为类、方法和组件编写适当的单元测试。在我的所有项目中,总是通过命令行运行 Jest。
  我在初始化项目时设置了一个简单的 npm test或 yarn test命令,并在需要手动测试时使用它。 此外,每当创建新的拉取/合并请求时,测试都会在 CI/CD 流水线中运行。
  然而,最近我发现了 VSCode Jest Extension。 此扩展提供了比命令行更好的工作流程。 让我们来看看几个功能。

1.自动启动 Jest 测试

  如果 Jest 安装在项目的根文件夹中,那么此插件将开箱即用,并将开始监视更改以运行相关测试。
  如果没有在根目录中安装 Jest,可以通过工作区中的 VSCode 设置或全局 VSCode 设置轻松设置自定义命令。 例如:
“jest.jestCommandLine”: “yarn test”

2. 显示单个失败/通过的测试用例

  VSCode Jest 扩展在测试通过/失败的测试文件中提供了一个可视化界面。 此外,可以通过单击绿色/红色图标重新运行测试。


  Jest 扩展在测试失败的地方添加了一个内联红色下划线,并显示详细的错误消息。 此外,可以在左侧看到所有测试的状态。
  VSCode Jest 扩展在测试通过/失败的测试文件中提供了一个可视化界面。 此外,可以通过单击绿色/红色图标重新运行测试。
  Visual Studio 边栏有一个测试面板,现在将显示所有的jtest测试用例及其状态。 这提供了快速概览和在测试之间导航的简便方法。

此外,失败的测试也显示在底部面板的问题检查器中。

允许调试单元测试

我们可以轻松地为 Jest 测试设置调试。首先,在项目的根目录中创建或打开.vscode/launch.json。应将以下配置添加到文件中。

  1. {
  2. "version": "0.2.0",
  3. "configurations": [
  4. {
  5. "type": "node",
  6. "request": "launch",
  7. "name": "Jest single run all tests",
  8. "program": "${workspaceRoot}/node_modules/jest/bin/jest.js",
  9. "args": [
  10. "-c",
  11. "./jest.config.ts",
  12. "--verbose",
  13. "-i",
  14. "--no-cache"
  15. ],
  16. "console": "integratedTerminal",
  17. "internalConsoleOptions": "neverOpen"
  18. }
  19. ]
  20. }

导航到测试文件并在代码中要调试的任意位置设置断点。可以通过单击行号左侧的位置来设置圆点来设置断点。

第 13 行的断点示例
在“ Run and Debug”面板中,可以按播放按钮开始调试。 这将显示大量信息:
Local variables——所有局部变量将与它们的值一起显示在面板的左上部分。可以使用调试器功能在测试行上移动,甚至移动到您正在测试的方法中,以找出测试未通过的原因。
Closure ——在闭包中可访问的所有变量。
Global——所有全局可访问的变量。

在文件中显示代码覆盖率

  VSCode Jest 扩展提供了一个选项,可以通过命令面板切换代码覆盖率报告。 打开命令面板并查找Jest:Toggle Coverage命令。
这将在代码文件中切换几项内容,如下面的屏幕截图所示。
●在文件顶部,可以获得有关此文件覆盖范围的全局信息。 它显示单元测试覆盖的函数、语句和分支的百分比。
●未测试的行标有红色背景。 这有助于一目了然地找出代码中未经测试的路径。
●部分测试的代码标有黄色背景。 例如,下面的三元运算符仅在一种情况下进行了测试,但从未到达 else 子句。

结论

如果你像我一样只使用过 CLI 界面进行单元测试,我强烈建议你尝试一下编辑器工具。 在我亲身体验之前,我不知道我到底有多需要它。

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)

相信能使你更好的进步!

点击下方小卡片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT炒股:查询分析某个公募基金的持仓变化

如果很认同某个基金经理的投资理念,可以跟踪基金经理的持仓变化,可以获取一些投资的线索。手动操作也可以实现,但略微麻烦,如果利用ChatGPT写一个跟踪程序,就方便多了。 下面以汇丰晋信副总经理、投资总监、知名基金经…

深入理解java虚拟机精华总结:线程安全与锁优化

深入理解java虚拟机精华总结:线程安全与锁优化 线程安全Java语言中的线程安全不可变绝对线程安全相对线程安全线程兼容线程对立 线程安全的实现方法互斥同步非阻塞同步无同步方案 锁优化自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁 线程安全 当多个线程同时访问…

MF30:VBA_清除Excel缓存

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

【云原生|Docker系列第1篇】什么?你竟然还不知道Docker?

欢迎来到Docker入门系列的第一篇博客!在当今的应用开发和部署领域,Docker已经成为一项极具吸引力的关键技术。本篇博客将为您介绍Docker的基本概念和作用,并解释为什么它成为现代应用开发和部署的终极利器。无论您是开发人员、系统管理员还是…

Java小白的学习之路——day11(静态)

目录 一、java的内存分析 1.java的内存区域 二、静态static 静态属性 静态方法 类加载 什么是类加载? 什么是触发类加载? 一、java的内存分析 1.java的内存区域 java的内存区域有五个区域 i.堆区:存放new的对象、成员遍历、常量池&a…

Yolov5-Lite + Sort算法实现边缘目标跟踪

文章目录 前言项目结构Sort算法实现卡尔曼跟踪器工具类多目标跟踪器 整合 前言 昨天挖了个坑,那么今天的话把坑填上,只要是实现Sort算法和Yolov5-Lite的一个整合。当然先前的话,我们在Yolov3–Tiny的时候,也做了一个,…

Netty实战(一) netty入门之创建echo服务器

目录 一、理论知识1. 网络协议TCP/UDP2. netty简介3. 依赖4. netty核心类介绍 二、开发实战1. 服务端2. 客户端 demo源码参考 一、理论知识 1. 网络协议TCP/UDP TCP、UDP协议属于七层协议中传输层的协议,这两种主流协议的差异: TCP是一个面向连接的、…

ArcGIS Pro遥感影像分类:随机森林、支持向量机方法

本文介绍在ArcGIS Pro软件中,基于随机森林、支持向量机等多种算法,对遥感影像数据加以监督分类的具体方法。 在文章ArcGIS中ArcMap栅格遥感影像的监督分类(https://blog.csdn.net/zhebushibiaoshifu/article/details/126905442)中…

【已解决】Couldn‘t find a tree builder with the features you requested: lxml

这是一个常见于Python爬虫代码的报错。 报错代码: soup BeautifulSoup(r.text, xml) 报错原因: BeautifulSoup的解析方法之一,xml,需要安装好lxml库才行 解决办法: 安装 lxml 库即可。 pip install lxml 安装好…

HTML的Input(type)的属性都有哪些

😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。 🎆学习格言:不读书的人,思想就会停止。——狄德罗 ⛪️个人主页:进入博主主页 🌼欢迎小伙伴们访问到博主的文章内容&am…

笨笨的刷题日记

关注我,带你一起学习,共同成长。 LeetCode 还记得三年前找实习的时候 leetCode 还是 1000 题左右,现在都飙到 3000 题了,还有前端狗专用的 JavaScript 系列。这个世界真实太疯狂了。 leetCode 部分习题参考答案 正在更新中 标号…

C++primer(第五版)第十五章(面向对象程序设计)

15.1 OOP:概述 面向对象程序设计(object-oriented programming)的核心思想是数据抽象,继承和动态绑定(个人认为应该是多态,但是书里原话是动态绑定,因此不太确定). 一开始,C只是C加上一些面向对象特性.C最初的名称C with Classes 也反映了这个血缘关系 …

摆动排序 II · Wiggle Sort II

链接: 题解: 1.先用partition函数,求得n/2的位置的排序 2.然后选取首尾指针(奇数选择1和length-1,偶数选择为1和length-2),进行swap交换 3.每次首指针每次2,尾指针每次-2 九章算…

使用 Sa-Token 实现不同的登录模式:单地登录、多地登录、同端互斥登录

一、需求分析 如果你经常使用腾讯QQ,就会发现它的登录有如下特点:它可以手机电脑同时在线,但是不能在两个手机上同时登录一个账号。 同端互斥登录,指的就是:像腾讯QQ一样,在同一类型设备上只允许单地点登…

Spring:Bean生命周期

Bean 生命周期 生命周期 Bean 生命周期是 bean 对象从创建到销毁的整个过程。 简单的 Bean 生命周期的过程: 1.实例化(调用构造方法对 bean 进行实例化) 2.依赖注入(调用 set 方法对 bean 进行赋值) 3.初始化&#x…

IDEA使用教程 安装教程

16. Codota 插件 Codota 插件可以根据使用频率优先显示较常用的类和方法。然而,是否使用该插件取决于个人的偏好。有时工具只能作为参考,仍然需要依靠个人记忆来确保准确性。 17. 快速查看类和字段的注释 按下 F2 键可以快速查看某个类或字段的文档注…

编译运行Secure Value Recovery Service v2

下载项目 git clone https://github.com/signalapp/SecureValueRecovery2.git编译 make dockersh报错 修改Dockerfile ARG PROTOC_GEN_GO_GITREV6875c3d7242d1a3db910ce8a504f124cb840c23a RUN go env -w GOPROXYhttps://goproxy.cn,direct RUN go install google.golang.org/p…

阿里云轻量应用服务器和云服务器的区别

阿里云服务器ECS和轻量应用服务器有什么区别?云服务器ECS是明星级云服务器,轻量应用服务器可以理解为简化版的云服务器ECS,轻量适用于单机应用,云服务器ECS适用于集群类高可用高容灾应用,阿里云百科来详细说下阿里云轻…

MachineLearningWu_10_NeuralNetwork

x.1 课程目录 为了开始我们的学习,我们会先列出我们的课程目录,诸如以下, x.2 NN的发展 NN一开始是为了模仿人类大脑,但随着时间的演进,逐渐被使用在各种应用之中, 深度学习DL为何最近几年突飞猛进呢&…

IDEA使用插件绘制UML类图+PlantUML语法讲解

安装 IDEA安装插件 安装完插件记得重启一下IDEA 安装Graphviz(亲测win11可以使用) 安装完插件之后,还需要安装Graphviz才可以渲染图形。 Graphviz安装包下载地址 安装过程很简单,直接双击或者管理员身份运行即可,注…