【GO】单元测试

简介: 【GO】单元测试

单元测试案例

测试步骤

假如我说我们现在已经封装好了一个test.go的文件,代码如下

package main
import "fmt"
func main() {
  fmt.Println(GetFibonacci(6))
  sum := GetNum(10)
  fmt.Println(sum)
  getRecursion := GetRecursion(10)
  fmt.Println(getRecursion)
  fbNum := GetFbNum(10)
  fmt.Println(fbNum)
}
/**
递归就是自己调自己
递归一定要有终止条件,否则就会无限循环
*/
func GetFibonacci(n int) int {
  // 如果是第0项或者第2项直接返回1
  if n == 0 || n == 1 {
    return 1
  } else {
    return GetFibonacci(n-1) + GetFibonacci(n-2)
  }
}
/**
使用非递归实现斐波那契数列
*/
func GetFbNum(n int) int {
  a := 1
  b := 1
  c := a + b
  for i := 1; i <= n; i++ {
    a = b
    b = c
    c = a + b
  }
  return a
}
/**
使用循环来实现自然数之和
*/
func GetNum(n int) (sum int) {
  for i := 1; i <= n; i++ {
    sum += i
  }
  return
}
/**
使用递归来实现自然数求和
*/
func GetRecursion(n int) (sum int) {
  if n == 1 {
    return 1
  } else {
    return n + GetRecursion(n-1)
  }
}

然后我们需要在创建一个test_test.go的文件代码如下

package main
import "testing"
/**
测试斐波那契数列
*/
func TestGetFibonacci(t *testing.T) {
  fibonacci := GetFibonacci(6)
  if fibonacci != 13 {
    t.Errorf("测试失败")
    return
  }
  t.Logf("成功")
}
func TestGetRecursion(t *testing.T) {
  mMap := make(map[int]int)
  mMap[10] = 55
  mMap[100] = 5050
  for key, value := range mMap {
    if GetRecursion(key) != value {
      t.Errorf("测试失败")
      return
    }
  }
  t.Logf("测试成功  ")
}

屏幕快照 2022-05-18 下午11.28.26.png

相关文章
|
5天前
|
SQL 安全 数据库连接
《Go 简易速速上手小册》第6章:错误处理和测试(2024 最新版)(上)
《Go 简易速速上手小册》第6章:错误处理和测试(2024 最新版)
31 1
|
5月前
|
算法 测试技术 Go
【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库
解释了为何需要开发自己的 Go 库,以及如何创建、测试和发布。文章以 Asiatz 库为例,详细阐述了创建目录、初始化项目、编写代码、测试、编写文档和发布等步骤,并强调了开发自己的 Go 库的优点,包括代码复用性、可维护性和可测试性。
235 0
【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库
|
6月前
|
测试技术 Go
零代码上手测试:Go语言内置测试框架介绍
零代码上手测试:Go语言内置测试框架介绍
47 0
|
7月前
|
Java 测试技术 Go
Go测试之.golden 文件
Go测试之.golden 文件
56 0
|
6月前
|
关系型数据库 测试技术 Go
Go语言微服务框架 - 5.GORM库的适配sqlmock的单元测试
与此同时,我们也缺乏一个有效的手段来验证自己编写的相关代码。如果依靠连接到真实的MySQL去验证功能,那成本实在太高。那么,这里我们就引入一个经典的sqlmock框架,并配合对数据库相关代码的修改,来实现相关代码的可测试性。
69 0
|
2月前
|
IDE 测试技术 程序员
浅谈Go单元测试
浅谈Go单元测试
20 0
|
3月前
|
Cloud Native 测试技术 Go
云原生系列Go语言篇-编写测试Part 2
在花时间坠入优化的深渊之前,请明确程序需要进行优化。如果程序已经足够快,满足了响应要求,并且使用的内存量在接受范围之内,那么将时间花在新增功能和修复bug上会更好。业务的需求决定了何为"足够快"和"接受范围之内"
26 2
|
3月前
|
存储 Cloud Native 测试技术
云原生系列Go语言篇-编写测试Part 1
2000年以来,自动化测试的广泛应用可能比任何其他软件工程技术都更能提高代码质量。Go是一种专注于提高软件质量的语言和生态系统,很自然的在其标准库中包含了测试支持。
41 3
|
4月前
|
算法 Java 测试技术
go语言中的测试
go语言中的测试
46 0
|
4月前
|
缓存 自然语言处理 安全
Go Fuzzing(模糊测试)
Go Fuzzing(模糊测试)