为了账号安全,请及时绑定邮箱和手机立即绑定

测试功能以获得 100% 的覆盖率

测试功能以获得 100% 的覆盖率

Go
MM们 2021-12-06 14:47:05
您将如何为以下函数编写测试以获得 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包目录下创建文件,然后使用这些文件进行测试。好处是方法更简单,测试也更简单。当您有很多依赖项时,第一种方法可能会变得非常麻烦……


查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信