前端自动化测试
unit测试:
karma-jasmine
karma-mocha
e2e测试:
nightwatch
Karma优点:
- 支持多浏览器的测试: 能帮助你开发出多个浏览器兼容的应用。而且支持移动设备的浏览器,只需要在启动karma服务后,用手持设备连接到karma的服务即可。
- 无测试框架限制 Jasmine,Mocha...
- 有文件监控功能,保存文件触发测试执行。
单元测试的必要性:
页面前端逻辑复杂度与日俱增,前端工程师写出来的JavaScript变得庞大甚至臃肿,维护的难度不断加大,你需要一个javascript单元测试框架,用于降低维护javascript代码时的出错风险,保证重构后的代码的兼容性,最重要的是减少人肉测试的过程,降低js代码维护成本。jasmine无疑是目前最优秀的javascript单元测试框架之一
所谓BDD(行为驱动开发,Behaviour Driven Development),是一种新的敏捷开发方法。Dan North对BDD给出的定义为:
BDD是第二代的、由外及内的、基于拉(pull)的、多方利益相关者的(stakeholder)、多种可扩展的、高自动化的敏捷方法。它描述了一个交互循环,可以具有带有良好定义的输出(即工作中交付的结果):已测试过的软件。
BDD与TDD(Test Driven Development )的主要区别是,使得非程序人员也能参与到测试用例的编写中来,大大降低了客户、用户、项目管理者与开发者之间来回翻译的成本。所以BDD更加注重业务需求而不是技术[1]。
下面是一些框架的测试方式:
vue:
unit:karma-jasmine 在chrome、Safari、Firefox上测试
cover:
var options = Object.assign(base, { browsers: ['PhantomJS'], reporters: ['mocha', 'coverage'], coverageReporter: { reporters: [ { type: 'lcov', dir: '../coverage', subdir: '.' }, { type: 'text-summary', dir: '../coverage', subdir: '.' } ] }, singleRun: true, plugins: base.plugins.concat([ 'karma-coverage', 'karma-phantomjs-launcher' ]) })
sauce:
??不懂
单测主要是karma-jasmine
e2e:
nightwatch、selenium、phantomjs
react:
jest
Jest 是Facebook的一个专门进行Javascript单元测试的工具,之前仅限他们的前端工程师在公司内部使用,后来开源出来,它是在Jasmine测试框架上演变开发而来,使用了我们熟知的expect(value).toBe(other) 这种断言格式。