大家平时工作,会主动写单测吗?

71 天前
 t4we

公司强制要求新代码 80%单测覆盖率了,大家平时工作代码会写单测吗,是主动还是强制要求?如果强制要求的话,大概是个什么标准?

7032 次点击
所在节点    程序员
67 条回复
seth19960929
70 天前
@aw2350 很多种方法
1. stub 用自己的类代替
2. 如果写了 dao 层, 自己另外实现一个 dao 去返回
3. 没有 dao 层, 直接连接数据库操作对象, 可以 mock 数据库操作对象
4. 最后的办法可以启动一个数据库实例

楼上都是神仙吗, 90% 的单测, 话说你们的业务都很简单?
Merlini
70 天前
写,时间紧的话就先延后,找时间补上。
Ryan7sz
70 天前
@seth19960929 同感,业务复杂的项目能做到百分之六七十的覆盖率就费了老劲了,太多的 stub 、mock 用例不仅写起来复杂而且测试的意义也大打折扣,很多时候就是为了完成 KPI
Desdemor
70 天前
会的,后续业务有改动或者优化,或者有啥 bug 还是单测方便的
wqhui
70 天前
尽量覆盖主流程的简单情况,涉及外部系统就很难搞了
onichandame
70 天前
无副作用的核心方法必须单测。涉及数据库等外部操作的就等集成测试再说。单测覆盖率低的原因大概率是抽象不好,外部操作在核心业务逻辑中侵入太深
LichMscy
70 天前
我们硬性要求 单测覆盖率增量 80% 低于则无法 MR
写业务代码和写单测时间 3:7
noyidoit
70 天前
会给业务写集成测试,但单测基本没机会写。不写单测的原因有两个,一是我们的业务很少拆分成可测试的独立单元;二是我不想 mock 任何跟 io 相关的东西
mb4555
70 天前
😂测试代码要好写 业务代码得先写好
xueyuehua
70 天前
其实我一直不明白单元测试有什么意义,因为我一定会让单元测试能跑通的,感觉就是有点倒果为因
asasjajsajsd
70 天前
不忙就写,忙就算了; 天天加班的时候,就不写了
LitterGopher
70 天前
当代码可测的时候。
iyaozhen
70 天前
主动,但覆盖率不太高,核心的地方写一下。作用还是很大的
iyaozhen
70 天前
@xueyuehua 有意义呀 能让你放心大胆改底层代码
特别是一些工具方法

当然要区分系统集接口测试和单测
zmcity
70 天前
必须写。
因为写单测对代码结构是有要求的,比如代码耦合必须使用接口,哪怕想偷一点懒在写代码的时候没有考虑过测试,后续的代码就都完全没法写单测了。
然后改代码的成本就会越来越高,直到整个代码完全不可修改。
SoviaPhilo
70 天前
@seth19960929 如果 mock 了数据库,建议是把这部分直接和业务逻辑剥离, 还更靠谱些。
seth19960929
70 天前
@SoviaPhilo 抽离了就得去实现一套数据库操作层, 不管是 mock 还是 faker 一个数据库连接, 都是为了写所谓的数据库操作层 (不应该为了写测试而写测试)
seth19960929
70 天前
@Ryan7sz 对, 有时候有些依赖直接写死了, 根本测不出内部返回的错误, 然后自己去封装一层再写测试, 这就有点为了测试而测试了
@xueyuehua 写了之后, 下次别人接手你的代码可以提前发现错误 >_
tracebundy
70 天前
必须写
oczizx
70 天前
必须写 感觉是为了测试而测试 甚至上了所谓的变异测试 非常离谱
业务与测试 3:7 甚至 2:8
可能是因为主要是存量业务的原因吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1071112

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX