今天有人发帖问,如果以后不在腾讯做程序员了想干嘛。
就让我用一个规范的单测来回答这个问题吧:
// MySelf 我自己 type MySelf struct { WantToDo []string } // Career 职业 type Career struct { Desc string } // WhatMyCareerWillBe 我未来会干嘛 func WhatMyCareerWillBe(myself MySelf) Career { return BeingATencentProgrammer(myself) } // BeingATencentProgrammer 在腾讯做程序员 func BeingATencentProgrammer(myself MySelf) Career { fmt.Printf("我以后想:%+v", myself.WantToDo) return Career{ Desc: "每天两点一线写代码", } } // TestWhatMyCareerWillBe 测试WhatMyCareerWillBe func TestWhatMyCareerWillBe(t *testing.T) { // 准备测试数据 whatIWantToDoFirst := "开台球厅+自带经营烤冷面、手抓饼、陕西凉皮、长春炒粉、鸡汤豆腐串+酸菜烤牛肉小酒馆" whatIWantToDoSec := "软件工程各类计算机语言编程培训辅导老师" myself := MySelf{ WantToDo: []string{whatIWantToDoFirst, whatIWantToDoSec}, } // Stub BeingATencentProgrammer gomonkey.ApplyFunc( BeingATencentProgrammer, func(_ MySelf) Career { return Career{ Desc: myself.WantToDo[rand.Intn(len(myself.WantToDo))], } }) // 执行待测方法 myCareer := WhatMyCareerWillBe(myself) // 断言 assert := assert.New(t) assert.True(myCareer.Desc == whatIWantToDoFirst || myCareer.Desc == whatIWantToDoSec) }
短短一文,包含了单测的几个标准步骤:
1. 准备数据
2. Mock/Stub/Expect的组合
3. 执行待测方法
4. 断言