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

 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