2 回答

TA貢獻1803條經(jīng)驗 獲得超3個贊
是的,這是可能的。例如,您可以覆蓋任何切片,包括元素類型為函數(shù)類型的切片。只需將您的函數(shù)放入一個切片中:
fs := []func(string) bool{funcA, funcB, funcC, funcD, ...}
for _, f := range fs {
helper(t, f, valid, true)
helper(t, f, invalid, false)
}
同樣對于您要實現(xiàn)的目標,表驅(qū)動測試可能更合適。請查看Go Wiki:表驅(qū)動測試,以及Go 博客:使用子測試和子基準測試。

TA貢獻1943條經(jīng)驗 獲得超7個贊
慣用的方法是使用表驅(qū)動測試:
func TestMyFunction(t *testing.T) {
valid := []string{"", "b", "ab", "acd", "asdfjkl", "aA"}
cases := []struct{
name string,
f func(string) bool
input []string
expected bool
}{
{
"Test func a",
funcA,
valid,
true
},
// Other test cases
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
helper(t, tc.func, tc.input, tc.expected)
})
}
}
附帶說明:您實際上可以使用Helper函數(shù)顯式標記輔助函數(shù)。這可確保在運行測試時從打印的行信息中排除您的輔助函數(shù):
func helper(t *testing.T) {
t.Helper()
// Helper function code
}
- 2 回答
- 0 關(guān)注
- 140 瀏覽
添加回答
舉報