Golang 的测试文件

一些函数没有连续的会话状态是可以写出来顺便就写一个测试脚本了

比如:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// redis.go
package tools

import (
"github.com/gomodule/redigo/redis"
"time"
"user-server/config"
)

var (
redisClient *redis.Pool
REDIS_HOST string
REDIS_DB int
REDIS_AUTH string
MAX_ACTIVE int
MAX_IDLE int
IDLE_TIMEOUT int64
)

func init() {
REDIS_HOST = config.Conf.Redis.Host
REDIS_DB = 0
REDIS_AUTH = "abc"
MAX_ACTIVE = 10
MAX_IDLE = 1

/**
*@MaxIdle 最大空闲链接
*@MaxActive 最大活跃链接
*@IdleTimeout 自动超时时间
*/
redisClient = &redis.Pool{
MaxIdle: MAX_IDLE,
MaxActive: MAX_ACTIVE,
IdleTimeout: 30 * time.Second,
Dial: func() (redis.Conn, error) {
c, err := redis.Dial("tcp", REDIS_HOST)
if err != nil {
return nil, err
}

if REDIS_AUTH != "" {
c.Do("AUTH", REDIS_AUTH)
}
c.Do("SELECT", REDIS_DB)
return c, nil
},
}
}

func GetRedis() redis.Conn {
return redisClient.Get()
}

对应的测试文件 在同目录创建一个 redis_test.go

1
2
3
4
5
6
7
8
9
10
11
12
package tools

import (
"testing"
)

func TestGetRedis(t *testing.T) {
co := GetRedis()
defer co.Close()

co.Do("SET", "test_redis_key", "test_redis_value")
}

测试脚本的标准格式是:

  • 文件名为 xxx_test.go 作为测试文件标记
  • 引入 testing
  • 要测试的函数名为 TestXXXX(t *testing.T) 输出结果通过 t.Logf() t.Error() 这类的测试包提供的函数来调用

写完代码, 在目录下运行:

1
2
3
4
5
6
# 运行当前目录所有测试文件并输出结果
go test -v
# 运行指定测试文件, 需要把被测试文件也带上
go test -v redis.go redis_test.go
# 运行指定的测试方法
go test -v --test.run TestGetRedis