go语言中单元测试的总结

1、传统的方式对代码测试

在文件中建立一个main的函数git

  • 一、传统方式的写法github

    package main
    
    import "fmt"
    
    // 定义一个求和的方法
    func sum(n int) int {
        res := 0
        for i := 0; i <= n; i++ {
            res += i
        }
        return res
    }
    
    func main() {
        res := sum(10)
        if res != 55 {
            fmt.Println("sum求和错误")
        } else {
            fmt.Println("sum求和正确")
        }
    }
  • 二、使用main函数的缺点shell

    • 不方便,咱们须要在main函数中去调用,这样就要去修改main函数,若是项目正在运行中,只能中止项目
    • 不利于管理,当咱们测试多个函数或者多个模块的时候,都写在main函数中,不利于咱们管理代码,感受好臃肿
    • 不能对代码性能的检测,不知道函数模块执行的时间

2、go语言中的单元测试

  • 一、介绍markdown

    Go 语言中自带有一个轻量级的测试框架testing 和自带的go test 命令来实现单元测试和性能测试,testing 框架和其余语言中的测试框架相似,能够基于这个框架写针对相应函数的测试用例,也能够基于该框架写相应的压力测试用例并发

  • 二、使用单元测试的优势框架

    • 确保每一个函数是可运行,而且运行结果是正确的
    • 确保写出来的代码性能是好的
    • 单元测试能及时的发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让程序可以在高并发的状况下还能保持稳定。

3、在go语言中单元测试快速入门

  • 一、在刚刚的go代码同级的目录下建立一个xx_test.go的文件ide

    ├── sum.go // 和上面的代码同样的
    └── sum_test.go
  • 二、sum_test.go代码函数

    package main
    
    import "testing"
    
    func TestSum(t *testing.T) {
    	res := sum(10)
    	if res != 55 {
    		t.Fatalf("sum(10)不正确")
    	} else {
    		t.Logf("sum(10)正确")
    	}
    }
  • 三、在命令行运行高并发

    ➜  test git:(master) ✗ go test -v   # 执行的命令
    === RUN   TestSum
    --- PASS: TestSum (0.00s)
        sum_test.go:10: sum(10)正确
    PASS
    ok      github.com/dev/test     0.005s  # 计算出这个方法执行的时间
    ➜  test git:(master) ✗
  • 四、go语言中单元测试的总结性能

    • 测试用例的文件必需要以fileName_test.go结尾[fileName根据须要测试的文件来写的]

    • 测试用例的函数必须以Test开头,通常来讲就是Test+被测试的函数名

    • 测试用例的函数的参数是固定的t *testing.T

    • 一个测试用例中能够有多个测试函数

    • 运行测试用例的指令

      • go test:若是运行正确,无日志输出,错误的时候会输出日志
      • go test -v:运行正确或错误都会输出日志
    • 当出现错误时,可使用t.Fatalf 来格式化输出错误信息,并退出程序

    • t.Logf 方法能够输出相应的日志

    • PASS表示测试用例运行成功,FAIL表示测试用例运行失败

    • 若是文件夹下有不少文件,你仅仅是要测试单个文件的方法

      go test -v xx_test.go xx.go
    • 若是文件中有不少测试用例方法,仅仅是测试一个方法

      go test -v -test.run 测试用例的函数
相关文章
相关标签/搜索