猿问

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

您将如何为以下函数编写测试以获得 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

}


MM们
浏览 185回答 1
1回答

哔哔one

极端方式更改方法签名以作为输入 afunc (string) (os.File, error)并在进行测试时注入它。沿着这些路线的东西:func countLines(files []string, open func(string) (*os.File, error)) int {    ...    f, err := open(e)    ...}然后,您可以进行测试并注入一个函数,该函数将返回为您安排的测试。实用的方法只需在test包目录下创建文件,然后使用这些文件进行测试。好处是方法更简单,测试也更简单。当您有很多依赖项时,第一种方法可能会变得非常麻烦……
随时随地看视频慕课网APP

相关分类

Go
我要回答