Day1 vitest 之 为什么选择vitest

Vitest是一个由Vite支持的测试框架,旨在成为Vite项目的首选测试运行器,通过共享转换管道、使用工作线程提高性能和提供与jest兼容的API。它解决了Vite原生测试工具的不足,尤其在单元测试和配置管理上。与其他测试框架如Jest、Cypress等相比较,Vitest提供了更简洁的集成和更好的性能体验。
摘要由CSDN通过智能技术生成

什么是vitest

vitest是由vite提供支持的下一代测试框架

该工具一开始就考虑到了vite,利用了在DX中的改进,例如即时热模块重新加载(HMR)

vite的目标

定位为vite项目的首选测试运行者,甚至对于不使用vite的项目来说也是一个可靠的替代方案

vite项目存在的需求和问题

即对vite原生测试运行器存在·需求:

vite对于常见的web模式提供开箱机用的支持,glob导入,ssr原语,众多插件和集成的生态也正在越来越繁荣,但是对于vite的单元测试方面的探索故事的书写并没有十分完善以及足够的清楚。而大众对于单元测试的需求和要求在增加

而像流行的jest测试框架和vite之间又存在大量重复。迫使用于配置两个不同的管道得问题。

vitest能怎么样解决上述问题

vitest使用与您的构建程序相同的配置的测试运行程序

在开发,构建,测试期间共享公共转换管道

使用相同的插件API进行扩展

让您与工具的维护者提供与vite的一流集成

鉴于jest的广泛采用,提供兼容API,允许你在大多数项目中将其用作直接替代品

vitest的常用功能简介

设置单元测试时

模拟

快照

覆盖率

vitest在性能方面的考虑

vitest非常关心性能

使用worker线程尽可能并行运行

一些端口的测试运行速度提高了一个数量级

默认启用观看模式

通过仔细选择其依赖项 ( 或者直接内联所需的部分) 来保持轻量级

vitest和其他测试框架的比较

jest VS vitest

  • 定位·

  • jest

    • 接管了测试框架领域,jest团队和社区创建了很多测试API,并推动了许多测试模式,这些模式已经成为了web生态系统的标准
  • vitest

    • 你的项目没有使用vite:提供大多数与jest的api和生态系统的兼容性,可以让你更快地运行单元测试,在大多数项目中,是Jest的直接替代品

    • 你的项目使用vite:如果使用Jest,那么需要配置和维护两个不同的管道,这是不合理的,如果使用vitest,那么您可以将开发,构建,测试环境的配置定义为单个管道,共享相同的插件和相同的vite.config.js,避免了重复性的麻烦

cypress vs vitest

定义:

        cypress

被称为端到端测试工具,其新组件测试运行期对测试vite有很大的支持,并且·是测试浏览器中呈现的内容的理想选择

是基于浏览器的测试运行期,是vite的补充工具,将捕获vitest无法捕获的问题(因为其使用真实的浏览器和真实的浏览器api)

        vitest

是基于节点的运行程序,专注于为闪电般的无头测试提供最佳DX,

功能

        cypress

用于e2e和组件测试

其测试驱动恒旭专注于确定元素是否可见,可访问,交互,cypress专为UI开发和测试而构建,测试完成之后,您可以使用浏览器开发工具调试发生的任何故障

像IDE,您可以在浏览器中看到真实渲染的组件以及测试结果和日志

        vitest

用于单元测试(测试无头代码的好选择)

支持各种部分实现的浏览器环境,例如Jsdom,这些环境足以让您快速对引用浏览器api的任何代码进行单元测试,代价是这些浏览器环境在其可实现的功能方面存在限制,例如jsdom缺少很多功能(window.navigation,布局引擎offsetTop)

使用

        对应用程序中的所有无头逻辑使用vitest,对所有基于浏览器的逻辑使用cypress

webDriverIO 网络驱动IO

定义:

        webDriverIO

是基于浏览器的代替测试运行器,是vitest的补充工具

功能

        webDriverIO

端到端测试,web组件测试,允许你在真实浏览器中测试逻辑

使用实际的自动化网络标准,克服了在cypress中运行测试的一些权衡和限制

允许你在移动设备上运行测试

web test runner

功能

                web test runner

在无头浏览器中运行测试,提供与web应用程序相同的执行环境,无需模拟浏览器api,或者dom

没有像cypress那样显示用于逐步完成测试的ui

有监视模式,但是不像vitest那样智能,并且可能并不总是重新运行你想要的测试

uvu

定义:

        uvu

是nodejs和浏览器的测试运行器

问题

        uvu

1.在单个线程中运行测试,因此测试不是孤立的,并且可能会有跨文件泄露

2.如果应用程序由vite提供支持,那么配置和维护两个不同的管道是不合理的

        vitest

1.使用工作线程来隔离测试并并行运行它们

2.使用 Vitest,您可以将开发、构建和测试环境的配置定义为单个管道,共享相同的插件和相同的配置。

转换代码

        uvu

依赖于require,loader挂钩

        vitest

使用vite,因此可以利用vite插件系统的全部功能来转换文件

reload(hmr)

        uvu

不提供智能监视模式来重新运行更改后的测试

        vitest

通过使用vite即时热模块重新加载的默认监视模式为您提供令人惊叹的DX

用途

        uvu是运行简单测试的快速选项,但是vitest对于更复杂的测试和项目可以更快,更可靠

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值