如果数据库驱动直接通过 struct 提供功能 API,则应当在使用数据库驱动时封装一层 DAO interface,之后依据 DAO interface 编写 mock 代码,实际上增加一层 DAO 并没有带来特别的收益,除非后续有切换数据库的可能,否则也只是方便进行 mock 测试,在现代编程中,层层封装过于泛滥。
// 通过不同颜色更清晰显示测试结果 go get -u github.com/rakyll/gotest // 根据前缀匹配测试用例 gotest -v -run TestHelloE // 指定测试文件 go test -v hello_test.go // 输出测试覆盖率 go test -cover gp test -coverprofile=cover.txt // 转换为 html go tool cover -html=cover.txt -o /tmp/cover.html // 测试当前目录及子目录下所有 package go test ./... // 测试当前目录下 package go test . // 打印测试信息 t.Log("hi") // go test 会自动多线程执行测试用例 // 有时候涉及到数据库操作的用例可能希望单线程执行 go test -p 1 ./...