课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
web前端开发一直以来都是兼顾了ui设计与后台代码的一种互联网IT职业。今天,我们就一起来了解一下,在进行web前端开发的时候,网页框架技术都有哪些工具是可以使用的。
测试分类
通常应用会有单元测试(Unittests)和功能测试(Functionaltests),复杂大型应用可能会有整合测试(Integrationtests)。
其中:
单元测试:关注应用中每个零部件的正常运转,防止后续修改影响之前的组件。
功能测试:确保其整体表现符合预期,关注能否让用户正常使用。
整合测试:确保单独运行正常的零部件整合到一起之后依然能正常运行。
详细资料1
详细资料2
开发人员主要关注单元测试,作为开发中的反馈。本文重点讨论的单元测试框架。
单元测试的好处:
如果能通过单元测试,那么通过后续测试且软件整体正常运行的概率大大提高。
单元测试发现的问题定位到细节,容易修改,节省时间。
追踪问题变得更加方便。
选择单元测试框架
单元测试应该:简单,快速执行,清晰的错误报告。
测试框架基本上都做了同一件事儿:
描述你要测试的东西
对其进行测试
判断是否符合预期
选择框架会考虑下面的点:
断言(Assertions):用于判断结果是否符合预期。有些框架需要单独的断言库。
适合TDD/BDD:是否适合测试驱动型/行为驱动型的测试风格。
异步测试:有些框架对异步测试支持良好。
使用的语言:大部分js测试框架使用js。
用于特定目的:每个框架可能会擅长处理不同的问题。
社区是否活跃。
注:
TDD:测试驱动型的开发方式,先写测试代码,之后编写能通过测试的业务代码,可以不断的在能通过测试的情况下重构。
BDD:与TDD很相似,测试代码的风格是预期结果,更关注功能,看起来像需求文档。
其实都是先写测试代码,感觉BDD风格更人性。
参考链接
测试工具的类型
组合使用工具很常见,即使已选框架也能实现类似的功能
提供测试框架(Mocha,Jasmine,Jest,Cucumber)
提供断言(Chai,Jasmine,Jest,Unexpected)
生成,展示测试结果(Mocha,Jasmine,Jest,Karma)
快照测试(Jest,Ava)
提供仿真(Sinon,Jasmine,enzyme,Jest,testdouble)
生成测试覆盖率报告(Istanbul,Jest,Blanket)
提供类浏览器环境(Protractor,Nightwatch,Phantom,Casper)
解释上面提到的点:
测试框架,即组织你的测试,当前流行BDD的测试结构。
快照测试(snapshottesting),测试UI或数据结构是否和之前完全一致,通常UI测试不在单元测试中
仿真(mocks,spies,andstubs):获取方法的调用信息,模拟方法,模块,甚至服务器
相关资料
各框架特点
Jest
facebook坐庄
基于Jasmine至今已经做了大量修改添加了很多特性
开箱即用配置少,API简单
支持断言和仿真
支持快照测试
在隔离环境下测试
互动模式选择要测试的模块
优雅的测试覆盖率报告,基于Istanbul
智能并行测试(参考)
较新,社区不十分成熟
全局环境,比如describe不需要引入直接用
较多用于React项目(但广泛支持各种项目)
Mocha
灵活(不包括断言和仿真,自己选对应工具)
流行的选择:chai,sinon
社区成熟用的人多,测试各种东西社区都有示例
需要较多配置
可以使用快照测试,但依然需要额外配置
Jasmine
开箱即用(支持断言和仿真)
全局环境
比较'老',坑基本都有人踩过了
AVA
异步,性能好
简约,清晰
快照测试和断言需要三方支持
Tape
体积小,只提供关键的东西
对比其他框架,只提供底层的API
总结一下,Mocha用的人多,社区成熟,灵活,可配置性强易拓展,Jest开箱即用,里边啥都有提供全面的方案,Tape精简,提供基础的东西底层的API。
选择测试框架并不是非黑即白的事儿,就像你并不能证明PHP不是好的语言。
个人倾向Jest,原因:容易上手,开箱即用,功能全面。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。