这是我参与「第五届青训营 」伴学笔记创作活动的第 N 天
单元测试
单元测试主要包括,输入、测试单元、输出以及校对。测试的对象(也就是单元)可以是接口、函数、模块等。将输入值输入测试单元后得到一个输出值。让输出值与期望值进行一个比较就是校对。保证质量的同时也提高了效率。
代码规则
1.所有测试文件以_test.go结尾。
2.func TextXxx(*testing.T)
3.初始化逻辑放到TestMain中。
覆盖率
衡量代码经过了考验,评价项目的测试水准。也就是由于在实际运用中总会出现很多问题例如用户输入值不合法,请求超时等。在测试的过程中工程师应该想到实际运用可能出现的大部分问题。而覆盖率也可以这样理解这段代码对于各种问题的考虑情况。
在实际运用中覆盖率能够到达50%到60%就已经合格了。在对于支付这种关键功能上需要达到80%。测试分支相互独立、全面覆盖,测试单元粒度足够小,函数单一职责.
基准测试
优化代码,需要对当前代码分析,内置的测试框架提供了基准测试的能力。
go语言哈hi提供了基准测试框架,基准测试是指测试一段程序的运行性能及耗费cpu的程度,而我们在实际项目开发中,经常会遇到代码性能瓶颈,为了定位问题经常要对代码作性能测试。
mock测试
这里用到的是mock,monkey是一个开源的mock测试库,可以对method,或者实例的方法进行mock,反射,指针赋值。可以打开以下链接:
monkey patch 的作用域在runtime,在运行时通过go的unsafe包,能够将内存中函数的地址替换为运行时的函数的地址。