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

如何从Go二进制文件捕获代码覆盖率?

雷曜灿
2023-03-14
问题内容

我知道在运行单元测试时可以捕获代码覆盖率指标。但是,当我们针对二进制文件本身进行集成测试(复数)时,我们想知道覆盖范围是什么,例如:

go build
./mybin somefile1
./mybin somefile2
# ... test a bunch more files and input flags

是否有可能做到这一点?可以仅为测试目的而构建二进制文件,因此可以根据需要选择任何编译选项。


问题答案:

Go Coverage工具只能与测试包一起使用。但是,并非所有希望都消失了。

如果您可以将集成测试强制到go测试框架中,那么您应该拥有所需的一切。这不应该听起来那么难。

基本上:

  1. 编写一个main()在go例程中执行您的功能的测试文件:

    func TestMainApp(t *testing.T) {
    go main()
    // .. then start your integration tests
    

    }

  2. 在测试中运行真实应用程序的情况下,可以通过exec.Cmd帮助启动集成测试。

  3. 收集您的承保范围统计信息。

  4. 利润。

一年前,这篇名为Go with external tests的文章概述了一种类似的方法。



 类似资料:
  • 难道不应该从它的二进制文件中获得源代码吗?既然编译是将高级语言(源代码)转换为低级语言(机器代码)的过程,难道我们不能为了获得源代码而直接反转这个过程吗?如果没有,为什么?

  • 问题内容: 我的项目结构 尽管stuff_test是从stuff.go执行代码的,但它表明 我使用了 如果我将* _test.go移至程序的stuff-folder,它将运行良好。 还是我的项目结构方法设计得不好/不符合要求? 问题答案: 不直接支持跨包测试覆盖率,但是有几个人构建了包装程序以合并各个覆盖率配置文件。 有关此问题的悠久历史,请参见问题#6909。并查看gotestcover以获取进

  • 我正在做一个大学项目,我需要覆盖当地法规,看看我的测试是否做得好。然而,netbeans控制台保持 --- jaco-maven-plugin:0.7.7.201606060606:报告(报告) @ 客户端服务提供器---由于缺少执行数据文件而跳过 JaCoCo 执行。 这是我的pom.xml

  • 代码覆盖是查找未被测试执行的代码区域的过程。不过要记住的是这并不能说明你测试代码的有效性。 在requirements.txt文件中添加依赖包: coverage==4.4.2 然后,我们在manage.py中新增一个命令: import coverage COV = coverage.coverage( branch=True, include='project/*',

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

  • 这是一个重要的可量化指标,如果代码覆盖率很高,你就可以放心的修改代码,在发版本的时候也能睡个安稳觉。否则就是拆东墙补西墙,陷入无尽的 bug 诅咒中。 那么在 OpenResty 里面如何看到代码覆盖率呢?其实很简单,使用 LuaCov 可以很方便的实现。 我们先了解下 LuaCov,这是一个针对 Lua 脚本的代码覆盖率工具,通过 luarocks 来安装: luarocks install l