专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

go语言中单元测试的总结

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

在文件中创建一个main的函数

  • 1、传统方式的写法
    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求和正确")
        }
    }

  • 2、使用main函数的缺点
    • 不方便,我们需要在main函数中去调用,这样就要去修改main函数,如果项目正在运行中,只能停止项目
    • 不利于管理,当我们测试多个函数或者多个模块的时候,都写在main函数中,不利于我们管理代码,感觉好臃肿
    • 不能对代码性能的检测,不知道函数模块执行的时间

二、go语言中的单元测试

  • 1、介绍

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

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

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

  • 1、在刚刚的go代码同级的目录下创建一个xx_test.go的文件
    ├── sum.go // 和上面的代码一样的
    └── sum_test.go

  • 2、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)正确")
        }
    }

  • 3、在命令行运行
    ➜  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) ✗ 

  • 4、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 测试用例的函数

未经允许不得转载:搜云库技术团队 » go语言中单元测试的总结

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们