karma

About

目前看到angular2+ 官方的使用是 karma + jasmine

Can I use Karma with testing framework X?

Yes. There are plugins for most of the common testing frameworks (such as Jasmine, Mocha, QUnit). If there is no plugin for the testing framework you like, go ahead and write one. It is simple - you can start by looking into the source code of the existing ones.

karma创建一个web server。

浏览器通过手动方位 karma server 监听的地址(默认9876),或者自动让karma 知道运行哪个browsers,来让浏览器可以被捕获

可用的列表http://karma-runner.github.io/5.0/config/browsers.html

karma 能力

见下面 paper的pdf内容

在真实环境中测试

支持远程控制

执行速度快

可以跟第三方 IDE 进行交互

支持 ci 服务

高扩展性,支持插件开发

支持调试

对比

paper 3.1的表

阿里云

主要目标

paper 2.1

  1. 真实设备上运行测试

  2. 远程控制

  3. 高效, 无缝隙使用流程

  4. Integration with IDEs and text editors

  5. Integration with CI Servers

  6. 扩展性

  7. Debugging

包含 client/server,基于Http 通信

设计和分析

Chapter 4

  • 速度

  • 可靠性

  • 在真实浏览器上测试 并

  • seamless workflow

服务端

paper 4.1

监听文件

与 client 进行通讯

向开发者输出测试结果

提供 client 端所需的资源文件

Manager

跟client双向通讯,例如开始和结束测试,收集测试结果

Web Server

Web Server, 给客户端提供静态资源文件

Reporter

给开发者输出报告

File System Watcher

检测变化并通知client,类似 一些热更新之类的?

Client

可以 多client 对1个server

Manager

和server双向通信

Testing Framework

框架内自己没有,可以用很多三方的framework,例如上面的jasmine

Tests and Code under Test

这是开发者编写的内容了

…….我感觉阿里社区里面那个翻译也不错。。可以不用继续啃英文了

总结

测试的代码 全部在客户端运行,这个客户端是真实的客户端,它可以是chrome,firefox等等

karma主要的工作是支撑测试的提供,例如静态文件服务,文件变化监听等,而具体代码测试内容是在karma启动的客户端(浏览器)中,依靠用户编写的测试代码和第三方测试框架完成的。

refs

http://karma-runner.github.io/5.0/intro/how-it-works.html

https://raw.githubusercontent.com/karma-runner/karma/master/thesis.pdf

https://fed.taobao.org/blog/taofed/do71ct/karma-origin/

https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347