【每日一题NO.63】单元测试及覆盖率

前端印记

共 1030字,需浏览 3分钟

 · 2021-10-20

为什么需要单元测试?

有单元测试加持可以保障交付代码质量,增强自己和他人的信心。

我们选择第三方库的时候不也是会优先选择有测试保障的么?

而且有了测试代码,未来对代码进行改动的时候也可以节省回归测试的时间。

怎么测试?

在做单元测试时尽量以集成测试为主,对少量难以被集成测试覆盖或需要分发的代码做单元测试,同时也可以有少量的端到端测试辅助

尽量不测试代码实现,测试代码实现可能会让测试用例很快失效。比如断言变量,当变量名发生变更时会导致测试不通过,但是可能功能并没有发生变化。

要写些什么样的测试?

以用户视角测试程序的功能,而非上帝的视角。

对一个组件,传入不同参数渲染 dom,对用户而言可能可以看到某些特定文字或可以做某些操作。此时可以断言 dom 是否出现了某些文字,某个动作是否有正确的响应。

不要写什么样的测试?

不要测试实现细节。

比如以上帝视角检查 redux store 上的数据、state 的数据等,而这些在最终用户眼里是不存在的,用户能感知的只是所表现的功能。

测试框架和周边配套

Jest 是 facebook 出品的测试框架。开箱即用,自带断言库、mock、覆盖率报告等功能。

由于前端要测试 UI,需要在模拟浏览器环境中渲染出 dom,所以需要一个这样的库。

其实存在很多这样的库,常用的有Enzyme@testing-library/react

测试覆盖/效率报告

Jest 自带测试报告,但是众多的项目分散在 gitlab 中给查看报告带来了很多麻烦。

需要考虑有一个集中的地方查看测试报告。

这里结合了 sonarreportportal 归集测试报告,可以通过一个集中的地方查看所有项目的测试报告。

其中结合 sonar 的代码扫描功能可以查看测试覆盖率等报告信息。

reportportal 可以查看测试执行效率。

另外官方自带AI分析报告,可以得出多维度的统计信息。

所有《每日一题》的 知识大纲索引脑图 整理在此:https://www.yuque.com/dfe_evernote/interview/everyday
你也可以点击文末的 “阅读原文” 快速跳转


END
愿你历尽千帆,归来仍是少年。


浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报