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

在Golang中使用子流程测试时,如何生成单元测试覆盖率?

娄浩荡
2023-03-14
问题内容

我对大多数代码都有单元测试。但是我无法弄清楚如何为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

但是它不会生成封面资料。我一直无法弄清楚为什么不这样做。它确实为执行主流程的测试生成封面配置文件,但是在子流程中执行的任何代码当然都不会标记为已执行。

我尝试实现尽可能多的代码覆盖率。我不确定我是否缺少某些东西,或者是否有更简单的方法来做到这一点。或者,如果不可能的话。

任何帮助表示赞赏。

谢谢

阿米尔


问题答案:

我会考虑需要测试的逻辑main()

func main() {
    start(os.Args)
}

func start(args []string) {
    // old main() logic
}

这样,您可以进行单元测试start()而不会发生变化os.Args



 类似资料:
  • 问题内容: 我试图用来衡量我正在构建的服务的测试覆盖率。这是一个REST API,我通过旋转,测试HTTP请求和查看HTTP响应来对其进行测试。这些测试不是服务包的一部分,并且返回0%的测试覆盖率。有没有办法获得实际的测试覆盖率?我希望在给定的端点上进行最理想的方案测试,至少可以覆盖特定端点处理程序的代码的30-50%,并且可以通过添加更多针对常见错误的测试来进一步改善此情况。 问题答案: 有人向

  • 是否有人能够从Maven Build获得JaCoCo中JMockit和Powermock单元测试的复盖范围? 我有一个Powermock单元测试的现有测试集,我希望逐步将其迁移到JMockit。但是我需要能够在一个报告中看到所有单元测试的测试覆盖范围,最好是在Sonar中。 通过将JaCoCo置于“脱机”模式,我确实使JMockit和Powermock测试与Surefire/JaCoCo一起运行(

  • 我可以在声纳获得单位测试覆盖率通过使用Jacoco工具的代码覆盖率,并使用其报告在声纳属性文件为'sonar.jacoco.report路径=.../Reports/report.exec'。如何通过使用RAD的默认插件获得SONAR中的单元测试覆盖率,该插件以. coveragedata、. Analysis和. html格式生成报告?

  • 新的一年 之前因为上家公司的经营出了问题,年前的大裁员,过了一个漫长的春节。 之后加入了新公司,然后正好赶上一个很紧急的项目,忙成狗,因此好久没更新文章了。 不过,我又回来啦! 前言 自动化测试,我们将使用karma和nightmare,内容会包括: 单元测试 e2e测试(放下一篇文章) 其实,单元测试一般用在写公共包的时候,比如通用的js函数库,通用的UI组件库。基本不太会在做业务项目的时候还使

  • 我一直试图获得本地单元测试的代码覆盖率,但没有成功。 这里有一个关于我所说的本地单元测试的参考。 https://developer.android.com/training/testing/unit-testing/local-unit-tests.html 但这似乎无济于事。我是不是漏掉了什么? 注意,如果我通过Android Studio运行本地单元测试,一切都很好。我点击了我的“测试”模块

  • 我已经看了一段时间关于stackoverflow的不同文章和答案,但我还没有找到适合我的情况的有效解决方案。我对jacoco、maven和sonar如何一起创建报告的理解肯定有问题,所以我要寻求帮助。 我有一个多模块maven项目,其结构如下(稍微简化了一下): 请允许我扩展一下。父模块只是一个带有整个依赖项及其版本的pom。这个pom被用作level1的每一个其他模块的父模块(直接位于根下面)。