开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:单元测试的引出】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9741
单元测试的引出
一、单元测试
1、Go 语言的一个很重要的特色是 goroutine 以及管道 channel 以及之前讲过的接口编程。
2、新建一个章节,选择2级,接着直接定位到幻灯片,给它取个名字叫做第15章单元测试。单元测试是关于单元测试的一个框架,单元测试往往是针对一个模块或针对一个函数进行测试的。接着看一下关于单元测试的基本介绍,先看一个需求,引出单元测试,需求如下。
func addUpper(n int) int {
res := θ
for i := 1; i <= n; i++{
res += i
}
return res
这个函数非常简单,传进去一个n值,然后进行一个累积,从1加加到n,以此得到一个结果,所以说这个函数本身是非常简单的。当在实际开发过程中,这个函数可能很复杂,那这个时候有一个需求就是怎样确认它运行的结果正确的。
3、传统的方法来进行测试:
在工作中,会遇到这样的情况,就是去确认一个函数,或者一个模块的结果是否正确,如上代码。用传统方法来解决,最简单最直接的方法就是在 main 函数中,调用 addUpper 函数,看看实际输出的结果是否和预期的结果一致,如果一致,则说明函数正确,否则函数有错误,然后修改错误。接着看一下代码实现,打开customer.Service.go的GOPROJECT,新建一个1文件夹叫 chapter15,然后新建一个文件夹叫 testingdemo01,在这里可以新建一个主文件夹 main,然后在这个地方写上 main.go。接着来简单的写一下代码,代码如下
package main
import (
"fmt"
)
//1一个被测试函数
func addupper(n int) int {
res := 0
for i := 1; 1 <= n; ina++{
res += i
}
return res
}
func main( ) {
//传统的测试方法,就是在 main 函数中使用看看结果是否正确
res := addupper(1e)// 1.+ 10 = 55
if res 1= 55 {
fmt.Printf("addupper 错误返回值=%v 期望值=%v\n"」 res, 55)
} else {
fmt.Printf("addupper 正确返回值-%v期望傲-%o\n"。 res,55)
}
}
接着试运行一下,然后回到上一级,进入 chapter15,cd 到 testingdemo,然后 go run main.go,接着运行,运行过后发现,结果与想象的相同,就是 addupper 返回值正确,期望值55。如果返回值不正确,比如代码不小心写成了for i := 1; 1 <= n-1; i++{,那这个时候就会发现返回值45,期望值55,这就是传统的测试方法。
4、传统测试方法的缺点分析:
(1)不方便,我们需要在 maini 函数中去调用。这样就需要去修改 main 函数,如果现在项目正在运行,就可能去停止项目。
(2)不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在 main 函数,不利于我们管理和清晰我们思路。
(3)引出单元测试。->testing 测试框架可以很好解决问题。