规范
- Go语言中所以测试文件都以_test.go结尾
- Go语言中所有的测试函数都要以Test开头,传递给测试函数的参数是*testing.T,它用于管理测试状态并支持格式化测试日志。测试日志会在测试时不断累积,最后以标准输出
抛出错误
- 相当于log之后failnow
func (c *B) Fatalf(format string, args ...interface{})
- 相当于log加上fail
func (c *T) Error(args ...interface{})
Fail标记TestCase失败但是继续执行
FailNow标记TestCase失败并停止执行,通过调用runtime.Goexit
如何生成测试用的假http请求 ?
func NewRecorder
func NewRecorder() *ResponseRecorder
NewRecorder返回一个初始化了的ResponseRecorder.
go test命令
可用参数:
- -bench regexp,执行相应的benchmarks,例如 -bench=.
- -cover开启测试覆盖率
- -run regexp,只运行regexp匹配的函数,例如-run=Array,那就只执行Array开头的函数
- -v 显示测试的详细命令
简单测试
main.go
func HandleFunc(w http.ResponseWriter, r *http.Request) {
text := r.FormValue("v")
if text == "" {
http.Error(w, "missing