go - 如何找到涵盖特定 Go 代码的测试?
问题描述
我试图弄清楚是否有办法查看哪些测试涵盖了我的 Go 代码中的功能。我正在与其他开发人员一起开发代码库,所以我没有自己编写所有测试/代码。
我看到一些被部分覆盖或几乎完全覆盖的函数,但它们在任何地方都没有引用(在它自己的或其他包中),并且在任何测试中都没有直接调用这些函数。
有没有办法可以找到哪些测试覆盖了该特定代码?当我试图找到它是否可能时,我得到的只是展示如何编写/运行测试并获得覆盖率/突出显示的文章,但实际上没有任何内容显示它是否可能。
作为记录,我在 linux 上使用 VS Code 并go test ./... -cover
在我的终端中运行,以及Ctrl+Shift+P -> "Go: Toggle Test Coverage In Current Package"
在 VS Code 中突出显示覆盖范围。
解决方案
现在通过评论看到更全面的情况,您似乎有一堆测试,由对 Go 缺乏经验的人编写,您的目标是清理测试以遵循标准的 Go 约定。
如果我面临该任务,我的策略可能是禁用存储库中的所有测试,方法是使用永远不会执行的构建标签,例如:
// +build skip
package foo
通过运行确认所有测试都已禁用,go test ./... -cover
并确认您在所有地方都有 0% 的覆盖率。
然后,逐个测试,我会将每个测试移到适当的位置,并将其放入没有skip
构建标签的新文件中。
如果这是一个大项目,我可能会一次做一个包,或者在一些其他小的、合乎逻辑的步骤中,以避免一个巨大的拉取请求。在这里使用你自己的判断。
我也强烈抵制同时进行任何其他清理或修复的冲动。我的目标是让每个 PR 都成为一个简单的复制粘贴,所以审查是微不足道的,我会保存我发现的其他清理列表,以便以后做。
推荐阅读
- constraint-programming - 将 IloCP 与太多工作人员一起使用的问题
- apache-spark - 扩展 DefaultCodec 以支持 Hadoop 文件的 Zip 压缩
- php - 如何在 sqlite 上删除带有 laravel 迁移的列?
- node.js - 更新 $in mongoDB nodejs
- asp.net - RSA 解密 Web.config 部分
- amazon-web-services - 是否可以在训练作业期间让 SageMaker 输出目标指标?
- android - 当我打开另一个活动时,RecyclerView 滚动到顶部
- python - Apache MXNet - 胶子和模块之间的转换(反之亦然)?
- java - Java - 同步和启动线程
- ios - 是什么导致了我的 Swift 代码中的这些内存泄漏?