go代码测试综合指南(一)

编写简单的单元测试

单元测试是一种测试函数和方法等小段代码的方法。 它的用途在于让您及早发现错误。 单元测试会让您的测试策略更高效,因为它们小且独立,易于维护。

我们来创建一个示例,练习一下测试。 创建函数
Fooer
,它将
int
作为输入并返回
string
。 如果输入的整数能被三整除,则返回 “Foo”,否则,将数字作为
string
返回。

您可能意识到
FooBarQix
编码问题的一个过度简化的示例。 围绕这个问题编写测试有助于使用 Go 练习测试。

创建一个名为
fooer.go
的新文件,粘贴以下代码来创建示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
```
packagemain
import"strconv"
// If the number is divisible by 3, write "Foo" otherwise, the number
funcFooer(inputint)string{
   isfoo:= (input%3) ==0
   ifisfoo{
       return"Foo"
    }
   returnstrconv.Itoa(input)
}
```

```

Go 中的单元测试与被测函数位于同一个软件包(即同一个文件夹)中。 按照惯例,如果函数在文件
`fooer.go`
中,那么该函数的单元测试则在文件
`fooer_test.go`
中。


编写一个简单的函数来测试 Fooer 函数,后者会在您输入 3 时返回 "Foo":

```go

packagemain
import"testing"
funcTestFooer(t*testing.T) {
   result:=Fooer(3)
   ifresult!=“Foo”{
       t.Errorf(“Result was incorrect, got:%s, want:%s.”,result,“Foo”)
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  
```    

Go 中的测试函数以
`Test`
开头,并将
`*testing.T`
作为唯一形参。 在大多数情况下,单元测试会被命名为
`Test[NameOfFunction]`

`testing`
软件包提供了与测试工作流交互的工具,例如
`t.Errorf`
,它会通过在控制台上显示错误消息来指示测试失败。

您可以通过命令行运行测试:

```bash

go test

  

输出应如下所示:

原文:
https://blog.jetbrains.com/zh-hans/go/2023/01/03/comprehensive-guide-to-testing-in-go/

江达小记