golang中的单元测试

释放双眼,带上耳机,听听看~!

其他go test命令

go test -run=?run对应一个正则表达式,只有函数名匹配上的测试函数才会被go test命令执行;

// 比如以上代码执行命令:go test -v -run=Fail
// 表示本次只运行 能正则匹配到Fail的 测试函数
=== RUN   TestSplitFail
    split_test.go:28: expected:[a d], got:[a cd]
--- FAIL: TestSplitFail (0.00s)
FAIL
exit status 1
FAIL    gotest/split    0.001s

go test -short:跳过测试函数中包含testing.Short()函数的测试函数;一般用于跳过执行起来太耗时的测试函数;比如:

// 修改以上示例代码中的TestSplitFail函数如下
func TestSplitFail(t *testing.T) {
	if testing.Short() {
		t.Skip("short模式下会跳过该测试用例")
	}
	got := Split("abcd", "bc") // 调用程序并返回程序结果
	want := []string{"a", "d"} // 期望的结果

	if !reflect.DeepEqual(want, got) { // 因为slice不能直接比较,借助反射包中的方法比较
		t.Errorf("expected:%v, got:%v", want, got) // 如果测试失败输出错误提示
	}
}

// 然后执行命令`go test -v -short`打印如下结果:
=== RUN   TestSplit
--- PASS: TestSplit (0.00s)
=== RUN   TestSplitFail
    split_test.go:25: short模式下会跳过该测试用例
--- SKIP: TestSplitFail (0.00s)
PASS
ok      gotest/split    0.002s

go test -cover测试覆盖率:覆盖率是指测试代码覆盖的业务代码的占比;

go test -cover -coverprofile=c.out将覆盖率相关的信息输出到当前文件夹下面的c.out文件中;

再然后执行go tool cover -html=c.out,使用cover工具来处理生成的记录信息,该命令会打开本地的浏览器窗口生成一个HTML报告;

【转自慕课】https://www.imooc.com

Go

使用 Gomock 进行单元测试

2022-3-3 16:50:19

Go

golang插入排序算法

2022-3-3 16:52:13

搜索