Go语言基础知识点分享

最近在加深对GO语言基础知识学习,巩固下基础,同时分享给朋友们

go中单元测试

通过 go test 进行测试

go 中给我们提供一个包:testing,Go 为我们提供一些很好的功能,我们可以在不需要太多学习的情况下使用它们。

若要在 Go 中开始使用测试,首先需要定义要测试的包。如果还没有,请创建一个名为 testing101 的包,并创建文件 sum.go,添加上下面的代码:

package testing101
func Sum(numbers []int) int {  
  sum := 0
 
  for _, n := range numbers {
    sum += n
  }
  return sum
}

接下来在同一个包中,创建一个名为 sum_test.go 的文件,并将下面的代码添加到其中。

package testing101
import (  
  "fmt"
  "testing"
)
func TestSum(t *testing.T) {  
  numbers := []int{1, 2, 3, 4, 5}
  expected := 15
  actual := Sum(numbers)
  if actual != expected {
    t.Errorf("Expected the sum of %v to be %d but instead got %d!", numbers, expected, actual)
  }
}

现在我们要运行我们的测试,所以在终端中切换到 testing101 包所在目录,并使用下面的命令运行测试。

go test -v

你应该看到像这样的输出:

=== RUN TestSum
— PASS: TestSum (0.00s)
PASS
ok calhoun.io/testing101 0.005s

恭喜!您刚刚使用 Go 内置的 testing 编写了第一个测试。现在,让我们深入了解实际发生的事情。

首先,是我们的文件名。Go 要求所有的测试都在以 _test.go 结尾的文件中。这使得我们在检查另一个 package 包的源代码时,确定哪些文件是测试和哪些文件实现功能非常容易。

在看了文件名之后,我们可以直接跳转到代码中,将测试包导入。它为我们提供了一些类型 (如testing.T) ,这些类型提供常见功能,比如在测试失败时设置错误消息。

接下来,是函数 TestSum()。所有的测试都应该以 func TestXxx(*testing.T) 的格式来编写。其中 Xxx 可以是任何字符或数字,而第一个字符需要是大写字符或数字。(译注:一般,Xxx 就是被测试的函数名)

最后,如上所述,我们使用了 TestSum 函数中的参数 *tesing.T。如果我们没有得到预期的结果,我们使用它来设置一个错误,当我们运行测试时,该错误将显示在终端上。若要查看此操作,请将测试代码中的 expected 更新为 18,而不更新 numbers 变量,然后使用 go test -v 运行测试。您应该会看到显示如下所示错误信息的输出:

=== RUN TestSum
— FAIL: TestSum (0.00s)
sum_test.go:14: Expected the sum of [1 2 3 4 5] to be 18 but instead got 15!
FAIL
exit status 1
FAIL calhoun.io/testing101 0.005s

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值