工程进阶II | 青训营笔记

53 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

四、测试

测试文件以 _test.go 结尾
函数 func TestXxx(*testing.T)
初始化逻辑放在 TestMain(m *Testing.M) 里面

4.1单元测试assert

"github.com/go-playground/assert/v2"

func JudgePassLine(score int16) bool {
	if score >= 60 {
		return true
	}
	return false
}
func TestJudgePassLine(t *testing.T) {
	isPass := JudgePassLine(70)
	assert.Equal(t, true, isPass)
}

4.2 覆盖率

go test xx.go xx_test.go --cover需要包含测试go文件包含的所有程序,用以测试

4.3依赖

我们的单测需要保证稳定性和富等性,稳定是指相互隔离,能在任何时间,任何环境,运行测试。幂等是指每次测试运行都应该产生与之 前一样的结果。 而要实现这一目的就要用到mock机制。

4.4Mock

monkey github.com/bouk/monkey
快速Mock函数:为一个函数/方法打桩

对ReadFirstline打桩测试,不再依赖本地文件

打桩的目的主要有:隔离、补齐、控制。

4.5基准测试

BenchmarkXxx(b *testing.B)开头 用于测试性能

基准测试的函数名须以 Benchmark 开头, 参数须为 *testing.B;循环中的 b.N, go 会根据系统情况生成,不用用户设定。

基准测试主要是通过测试 CPU 和内存的效率问题,来评估被测试代码的性能,进而找到更好的解决方案。比如链接池的数量不是越多越好,那么哪个值才是最优值呢,这就需要配合基准测试不断调优了。

项目实战

后续补充