当前位置: 首页 > 面试题库 >

如何在GO中检测分离文件夹的代码覆盖率?

闾丘高峰
2023-03-14
问题内容

我的项目结构
stuff/stuff.go -> package: stuff
test/stuff/stuff_test.go -> package: test
尽管stuff_test是从stuff.go执行代码的,但它表明
coverage: 0.0% of statements

我使用了 go test -cover
如果我将* _test.go移至程序的stuff-folder,它将运行良好。
还是我的项目结构方法设计得不好/不符合要求?


问题答案:

不直接支持跨包测试覆盖率,但是有几个人构建了包装程序以合并各个覆盖率配置文件

有关此问题的悠久历史,请参见问题#6909。并查看gotestcover以获取进行合并的示例工具。还有gocovmerge。我构建了自己的版本,因此没有尝试过任何版本,但是我确信它们都可以像我的一样工作,并且我的工作正常。

我的感觉是,这只是一个问题,没有人为它编写过真正引人注目的变更列表,并且对核心维护者没有那么重要,因此没有得到解决。它确实提出了可能会破坏现有测试的极端情况,因此,对我们大多数人有效的快速hack并没有被接受。但是我没有看到任何建议表明核心维护者积极反对此功能。



 类似资料:
  • 问题内容: 我知道在运行单元测试时可以捕获代码覆盖率指标。但是,当我们针对二进制文件本身进行集成测试(复数)时,我们想知道覆盖范围是什么,例如: 是否有可能做到这一点?可以仅为测试目的而构建二进制文件,因此可以根据需要选择任何编译选项。 问题答案: Go Coverage工具只能与测试包一起使用。但是,并非所有希望都消失了。 如果您可以将集成测试强制到go测试框架中,那么您应该拥有所需的一切。这不

  • 我试图弄清楚如何从由Jenkins启动的Jacoco生成的代码覆盖率报告中排除文件夹列表。 似乎可以排除类,但不能排除文件夹,这让我很恼火,因为我已经开始使用一个相当大的在线支付系统库。运行那些单元测试意味着不断地在那个平台上创建测试帐户,并且不得不再次删除它们。詹金斯跑步的每一分钟。 并且仅仅排除文件夹比必须排除每一个类要简单得多。

  • 在我们的代码中,有很多这样的日志片段: 有没有可能配置SonarQube,使这样的代码块不包含在代码覆盖率分析中?编写测试来覆盖这样的调试语句似乎没有多大意义... 我发现了如何: < li >从覆盖率分析中忽略整个文件 < li >忽略代码块中的问题 但是我没有找到仅从覆盖率分析中排除代码块的方法。

  • 问题内容: 我的软件包中有一个生成的文件,该文件位于顶部。我正在使用进行包裹测试。这将创建覆盖率配置文件并显示总覆盖率百分比。但是在计算覆盖率时,它还包括生成的文件。有没有一种方法可以在覆盖率计算中忽略生成的文件? 问题答案: 大多数Go工具都在软件包上运行,因为软件包本身形成了一个整体上可能有用的 单元 。从软件包中排除文件很容易“破坏”软件包:被排除的文件可能包含(关键的)软件包初始化代码,甚

  • 免责声明初学者问题! 为了回答这个问题,我的项目结构高度简化,如下所示: 在阅读了Jeff Knupp关于单元测试的博客文章并写了一系列测试之后,我想看看我的代码现在被测试覆盖了多少。所以我安装了coverage.py,以下内容让我困惑: $coverage运行main。py(显示脚本中的打印/日志) $覆盖报告main.py 姓名、Stmts、小姐、封面 主要的py,114,28,75% 问题是

  • 问题内容: 有没有人成功地为Go单元测试生成代码覆盖率?我在网络上找不到该工具。 问题答案: 请注意,Go1.2(2013年第四季度,rc1可用)现在将显示 测试覆盖率结果 : 的一项主要新功能是, 它现在可以计算并在单独安装的新程序的帮助下显示测试覆盖率结果。 该工具是一部分subrepository。可以通过运行安装 封面工具有两件事。 首先,给“ ” 标志时,它将自动运行以重写包的源并插入检