一、什么是单元测试?
单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验。单元测试几乎都是用单元测试框架编写的。单元测试容易编写,能快速运行。单元测试可靠、可读、并且可维护。只要产品代码不发生变化,单元测试的结果是稳定的。
单元测试具有以下特征:
- 自动化、可重复执行;
- 很容易实现;
- 运行速度应该很快;
- 结果应该是稳定的;
- 能完全控制被测试的单元;
- 完全隔离(独立于其他测试的运行);
二、为什么要进行单元测试
从一个案列引入单元测试,在main函数中,调用函数实现1~n的和,看看实际输出的结果是否和预期的结果一致,如果一致,则说明函数正确,否则函数有错误,然后修改错误。
1、案列传统测试方法实现
1)代码如下:
// 被测试函数
func getSum(n int) (sum int) {
for i := 0; i <= n; i++ {
sum +=i
}
return
}
func TestGetSum() {
//传统的测试方法,就是在main函数中使用看看结果是否正确
res := getSum(10)
if res == 55 {
fmt.Println("测试成功")
}else{
fmt.Println("测试失败")
}
}
2)测试结果:
e:\GoProject\src\go_code\unittest\code\main>go run main.go
测试成功
e:\GoProject\src\go_code\unittest\code\main>
2、传统方法的劣势
1)测试不方便.
将测试代码直接放在main函数中测试,必然会影响项目正常运行,如果现在项目正在运行,就可能去停止项目。
2)不利于管理.
因为当我们测试多个函数或者多个模块时,都需要写在main函数,不利于我们管理和清晰我们思路。同时要测试某个函数时,还要通过注销和启用来调整,显得测试代码会很乱,不好管理。
3、案列测试框架实现
1)代码如下:
calsum.go
package test
func getSum(n int) (sum int) {
for i :=