您将如何为以下函数编写测试以获得 100% 的覆盖率?func countLines(files []string) int { sum := 0 for _, e := range files { f, err := os.Open(e) if err != nil { fmt.Fprintf(os.Stderr, "err: %v\n", err) continue } sum += countFileLine(f) f.Close() } return sum}
1 回答
哔哔one
TA贡献1854条经验 获得超8个赞
极端方式
更改方法签名以作为输入 afunc (string) (os.File, error)并在进行测试时注入它。
沿着这些路线的东西:
func countLines(files []string, open func(string) (*os.File, error)) int {
...
f, err := open(e)
...
}
然后,您可以进行测试并注入一个函数,该函数将返回为您安排的测试。
实用的方法
只需在test包目录下创建文件,然后使用这些文件进行测试。好处是方法更简单,测试也更简单。当您有很多依赖项时,第一种方法可能会变得非常麻烦……
- 1 回答
- 0 关注
- 184 浏览
添加回答
举报
0/150
提交
取消