go的单元测试介绍

一 问题引出

在我们工作中,我们会遇到这样的情况,就是去确认一个函数,或者一个模块的结果是否正确。

例如,我们会遇到测试下面函数是否正确。

func addUpper(n int) int {
   res := 0
   for i := 1; i <= n; i++ {
      res += i
   }
   return res
}

二 传统的方法

1 用传统方式进行测试

在 main 函数中,调用 addUpper 函数,看看实际输出的结果是否和预期的结果一致,如果一致,则说明函数正确,否则函数有错误,然后修改错误。

2 代码

package main

import (
   "fmt"
)

// 一个被测试函数
func addUpper(n int) int {
   res := 0
   for i := 1; i <= n-1; i++ {
      res += i
   }
   return res
}

func main() {
   // 传统的测试方法,就是在 main 函数中测试,看看结果是否正确
   res := addUpper(10)
   if res != 55 {
      fmt.Printf("addUpper错误 返回值=%v 期望值=%v\n", res, 55)
   } else {
      fmt.Printf("addUpper正确 返回值=%v 期望值=%v\n", res, 55)
   }
}

3 测试

addUpper错误 返回值=45 期望值=55

三 传统方法的缺点分析

1 不方便, 我们需要在 main 函数中去调用,这样就需要去修改 main 函数,如果现在项目正在运行,就可能去停止项目。

2 不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在 main 函数,不利于我们管理和清晰我们思路。

3 go 引出单元测试。testing 测试框架可以很好解决问题。

四 单元测试基本介绍

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

1 确保每个函数是可运行,并且运行结果是正确的。

2 确保写出来的代码性能是好的。

3 单元测试能及时的发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让程序能够在高并发的情况下还能保持稳定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值