当我编写测试时,我喜欢使用随机数来计算。
例如
func init() {
rand.Seed(time.Now().UnixNano())
}
func TestXYZ(t *testing.T) {
amount := rand.Intn(100)
cnt := 1 + rand.Intn(10)
for i := 0; i < cnt; i++ {
doSmth(amount)
}
//more stuff
}
这当然有一个缺点
expected := calcExpected(amount, cnt)
因为测试的预期值需要根据随机值计算。
如果这种方法受到批评:
它使测试变得不必要的复杂
由于随机性,可重复性较差
我认为虽然没有随机性,我实际上可以:
弥补我的结果,例如测试仅适用于特定值。随机性证明我的测试是“稳健的”
捕获更多边缘情况(有争议,因为边缘情况通常是特定的,例如 0,1,-1)
使用随机数真的那么糟糕吗?
(我意识到这是一个意见问题,但我对人们的观点非常感兴趣,不介意投反对票)。
精慕HU
相关分类