互联网面试宝典

您现在的位置是: 首页 > Golang

问题详情

如何进行Golang的单元测试?

面试宝典 2023-06-12 Web前端开发工程师 33
Golang的单元测试可以使用内置的testing包进行。以下是一个简单的示例:

1. 编写测试文件

在项目目录下创建一个名为xxx_test.go的文件,例如hello_test.go。在该文件中编写多个函数,每个函数对应着一个测试用例。函数名必须以Test为前缀。

```
package main

import "testing"

func TestHello(t *testing.T) {
// 测试代码
}
```

2. 编写测试用例

在TestHello中编写多个测试用例,可以使用testing.T提供的方法进行测试:

```
func TestHello(t *testing.T) {
cases := []struct {
name string
want string
}{
{"Alice", "Hello, Alice!"},
{"Bob", "Hello, Bob!"},
}

for _, c := range cases {
got := Hello(c.name)
if got != c.want {
t.Errorf("Hello(%q) == %q, want %q", c.name, got, c.want)
}
}
}
```

3. 运行测试

使用go test命令运行测试。测试文件必须命名为xxx_test.go,否则不会被执行。

```
go test
```

4. 查看测试结果

运行测试后,会显示每个测试用例的运行结果,包括测试是否通过、运行时间等信息。

```
PASS
ok example.com/myproject 0.001s
```

如果测试中有错误,会输出错误信息和堆栈跟踪:

```
FAIL
example.com/myproject 0.002s
--- FAIL: TestHello (0.00s)
hello_test.go:16: Hello("Alice") == "Hi, Alice!", want "Hello, Alice!"
FAIL
```

5. 更多测试方法

在测试中,还可以使用testing包提供的其它方法,例如:

- t.Fatal():在测试中断言失败,整个测试都将被标记为失败。
- t.SkipNow():跳过当前测试用例,进入下一个用例。
- t.Helper():标记测试辅助函数,以忽略其对测试结果的影响。