我对我们的大部分代码进行了单元测试。但是我无法弄清楚如何为 main 包中的 main() 中的某些代码生成单元测试覆盖率。
主要功能非常简单。它基本上是一个选择块。它读取标志,然后调用另一个函数/执行某事,或者只是在屏幕上打印帮助。但是,如果命令行选项设置不正确,它将以各种错误代码退出。因此,需要进行子过程测试。
我尝试了子流程测试技术,但修改了代码,使其包含覆盖标志:
cmd := exec.Command(os.Args[0], "-test.run=TestMain -test.coverprofile=/vagrant/ucover/coverage2.out")
这是原始代码:https : //talks.golang.org/2014/testing.slide#23上面幻灯片的解释:http : //youtu.be/ndmB0bj7eyw?t=47m16s
但它不会生成封面配置文件。我一直无法弄清楚为什么不。它确实为执行测试的主进程生成覆盖配置文件,但是在子进程中执行的任何代码当然不会被标记为已执行。
我尝试实现尽可能多的代码覆盖率。我不确定我是否遗漏了什么,或者是否有更简单的方法来做到这一点。或者,如果这是不可能的。
汪汪一只猫
烙印99
万千封印
相关分类