如果我们可以为golang测试获得分支覆盖,有人可以向我建议吗?假设我有一个golang代码,如下所示:
package main
import (
"fmt"
)
func HelloWorld(name string, printv int) string {
if name == "tuk" || printv == 1 {
fmt.Println("Hello tuk")
return "Hello tuk"
} else {
fmt.Println("Who are you?")
return "Who are you?"
}
}
相应的测试文件如下所示:
package main
import "testing"
func TestHelloWorld(t *testing.T) {
r := HelloWorld("tuk", 0)
if r != "Hello tuk" {
t.Error("Test Failed")
}
}
如果我执行下面的测试命令,它只是给我声明覆盖:
go test -coverprofile=cover.out .
ok test 0.007s coverage: 60.0% of statements
有没有办法可以获得分行报道?
答案 0 :(得分:1)
从Go 1.11(2018年11月)开始,为覆盖only covers each block of statements生成的机器代码。应该有可能采用该代码并将其调整为覆盖表达式的每个分支。
the gobco project似乎确实做到了这一点,尽管仅适用于单个文件而不适用于整个软件包(同样,截至2018年11月)。
我filed an issue查看Go团队是否认为分支机构覆盖值得。决定是使当前代码保持现在的简单,并做出决定had already been documented in the code itself。
最后I forked the gobco project并添加了我需要的所有功能。
答案 1 :(得分:-1)
有一种方法可以显示实际测试代码的哪一部分see this blog for more information("查看结果"部分)
此解决方案可以集成到某个编辑器中(例如,带有go-plus插件的atom)。
希望得到这个帮助。