自动化测试(二)02——单元测试类工具-Karma、Jasmine、Mocha、Jest、AVA & E2E测试类工具-cypress、nightmare、nightwatch、testcafe

自动化测试(二)02——单元测试类工具-Karma、Jasmine、Mocha、Jest、AVA & E2E测试类工具-cypress、nightmare、nightwatch、testcafe、webdriverio

单元测试类工具

npm trends: 点击链接

在这里插入图片描述

1、Karma

Karma是一个Runner(即运行环境),具体详细的介绍见 后面的章节Karma

A test runner is the library or tool that picks up an assembly (or a source code directory) that contains unit tests, and a bunch of settings, and then executes them and writes the test results to the console or log files.
there are many runners for different languages. See Nunit and MSTest for C#, or Junit for Java.

karma 设计目标主要有下面四点:

高效
扩展性
运行在真实设备
无缝的使用流程

karma 是一个典型的 C/S 程序,包含 client 和 server ,通讯方式基于 Http ,通常情况下,客户端和服务端基本都运行在开发者本地机器上。

一个服务端实例对应一个项目,假如想同时运行多个项目,得同时开启多个服务端实例。

Karma 的优点是能通过插件和配置的方式集成大部分的主流的测试框架和前端库,能方便的一次在多浏览器环境执行测试用例,并集成了测试覆盖率生成功能,生成页面形式覆盖率报告并能导出不同形式的覆盖率报告数据。

它的缺点是,对测试页面环境的搭建和资源文件的加载不是常见的形式,最开始搭建环境时会有很多跟预期不一致的情况,配置不直观。

2、Jasmine

Jasmine 带有 assertions(断言),spies (用来模拟函数的执行环境)和 mocks (mock 工具),Jasmine 初始化设置简单,同时,如果你需要一些单元功能的时候你仍然可以加一些库进来。

3、Mocha

Mocha 是一个灵活的库,提供给开发者的只有一个基础测试结构。然后,其它功能性的功能如 assertions, spies和mocks,这些功能需要引用添加其它库/插件来完成。

5、Jest

被 Facebook 和各种 React 应用推荐和使用,Jest 得到了很好的支持。Jest 也被发现是一个非常快速的测试库在平行测试报告中。

对于小型项目来说你可能在开始的时候不用过多担心,而性能的提高,对于希望全天持续部署的大型应用 app 来说是非常之好的。

而开发人员主要是用 Jest 去测试 React 应用,Jest 可以很容易地集成到其它应用程序中充许你使用更独特的特性在其它地方

快照测试是一个非常好用的工具,去确保你的应用 UI 不会有超出预期的错误,在产品发布替换的期间发生。虽然大部分功能,专门设计都是使用在 React 上。

Jest 有着很广阔的 API 。

6、AVA

AVA 它的优势是 JavaScript 的异步特性和并发运行测试.

利用了 JavaScript 的异步特性优势,优化了在部署的时间等待

保留了简单的 API 为你提供你所需要的功能。

如果搭配 mocking 来使用它会显得更加友好,但是必须安装一个单独的库。

E2E测试类工具

npm trends: 点击链接

在这里插入图片描述

最佳实践

测试有很多好处,但不代表一上来就要写出100%场景覆盖的测试用例。

最佳的实践:基于投入产出比来做测试

由于维护测试用例也是一大笔开销(毕竟没有多少测试会专门帮前端写业务测试用例,而前端使用的流程自动化工具更是没有测试参与了)。

对于像基础组件、基础模型之类的不常变更且复用较多的部分,可以考虑去写测试用例来保证质量。个

先写少量的测试用例覆盖到80%+的场景,保证覆盖主要使用流程。

一些极端场景出现的bug可以在迭代中形成测试用例沉淀,场景覆盖也将逐渐趋近100%。

但对于迭代较快的业务逻辑以及生存时间不长的活动页面之类的就别花时间写测试用例了,维护测试用例的时间大了去了,成本太高。

大型项目,可以使用Jest快速形成配置并且开始单元测试。

需要测试快照,则可以选择Jest或者Ava。

对于配置性要求高,对测试框架性能有要求的可以选择mocha。

对模拟还原浏览器业务操作有很大的需求的,可以选择nightmare

配合CI工具完成自动化测试、测试覆盖率、测试结果推送。
Ava。

对于配置性要求高,对测试框架性能有要求的可以选择mocha。

对模拟还原浏览器业务操作有很大的需求的,可以选择nightmare

配合CI工具完成自动化测试、测试覆盖率、测试结果推送。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是详细的步骤: 1. 创建一个新的Angular项目 使用Angular CLI创建一个新的Angular项目。在命令行中输入以下命令: ``` ng new my-app ``` 这会创建一个名为my-app的新项目。 2. 创建一个简单的Angular画面 在src/app目录下创建一个名为app.component.ts的组件文件,并输入以下代码: ``` import { Component } from '@angular/core'; @Component({ selector: 'app-root', template: ` <div> <h1>Welcome to my Angular App!</h1> <p>{{ message }}</p> <button (click)="updateMessage()">Update Message</button> </div> ` }) export class AppComponent { message = 'This is a message!'; updateMessage() { this.message = 'The message has been updated!'; } } ``` 这是一个非常简单的画面,只有一个标题,一个消息和一个按钮。当用户单击按钮时,消息会被更新。 3. 创建自动化测试用例 在src/app目录下创建一个名为app.component.spec.ts的测试文件,并输入以下代码: ``` import { TestBed, ComponentFixture } from '@angular/core/testing'; import { AppComponent } from './app.component'; describe('AppComponent', () => { let component: AppComponent; let fixture: ComponentFixture<AppComponent>; beforeEach(() => { TestBed.configureTestingModule({ declarations: [ AppComponent ] }); fixture = TestBed.createComponent(AppComponent); component = fixture.componentInstance; }); it('should create the app', () => { expect(component).toBeTruthy(); }); it('should update the message', () => { component.updateMessage(); expect(component.message).toEqual('The message has been updated!'); }); }); ``` 在这个测试用例中,我们首先使用TestBed创建一个测试模块,并声明AppComponent。然后,我们使用createComponent方法创建一个AppComponent实例,并保存在fixture变量中。 接下来,我们编写两个测试用例。第一个测试用例测试AppComponent是否被正确创建,它应该返回true。第测试用例测试updateMessage方法是否能够正确更新消息。 4. 运行自动化测试 最后,我们可以使用Angular CLI运行这些测试用例,并获得自动化测试结果。在命令行中输入以下命令: ``` ng test ``` 这会启动Karma测试运行器,并运行我们的测试用例。测试运行完成后,我们可以在控制台中看到测试结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值