我如何找到哪些测试涵盖了特定的 Go 代码?
How can I find what tests cover specific Go code?
我想知道是否有办法查看哪些测试涵盖了我的 Go 代码中的函数。我正在与其他开发人员一起开发代码库,所以我没有自己编写所有 tests/code。
我看到一些函数被部分覆盖或几乎完全覆盖,但它们在任何地方都没有引用(在它自己的或其他包中),并且这些函数不会在任何测试中直接调用。
有什么方法可以找到哪些测试涵盖了该特定代码?当我试图找出它是否可行时,我得到的只是展示如何 write/run 测试和获得覆盖率 percentages/highlighting 的文章,但没有实际显示它是否可能。
郑重声明,我在我的终端机 linux 和 运行 go test ./... -cover
上使用 VS Code,并在 VS Code 中使用 Ctrl+Shift+P -> "Go: Toggle Test Coverage In Current Package"
进行覆盖突出显示.
现在可以看到更完整的画面,通过评论,您似乎有一堆乱七八糟的测试,由对 Go 经验不足的人编写,您的目标是清理测试以遵循标准 Go惯例。
如果我面临该任务,我的策略可能是通过使用永远不会执行的构建标记来禁用存储库中的所有测试,例如:
// +build skip
package foo
通过 运行 go test ./... -cover
确认所有测试都已禁用,并确认所有地方的覆盖率都是 0%。
然后,逐个测试,我会将每个测试移到适当的位置,并将其放入一个没有 skip
构建标记的新文件中。
如果它是一个大项目,我可能会一次做一个包,或者在其他一些小的、合乎逻辑的步骤中,以避免出现巨大的拉取请求。在这里使用你自己的判断。
我也强烈抵制同时进行任何其他清理或修复的冲动。我的目标是让每个 PR 都成为一个简单的复制粘贴,因此审查很简单,我会保存一份我发现的其他清理工作的列表,以便日后进行。
我想知道是否有办法查看哪些测试涵盖了我的 Go 代码中的函数。我正在与其他开发人员一起开发代码库,所以我没有自己编写所有 tests/code。
我看到一些函数被部分覆盖或几乎完全覆盖,但它们在任何地方都没有引用(在它自己的或其他包中),并且这些函数不会在任何测试中直接调用。
有什么方法可以找到哪些测试涵盖了该特定代码?当我试图找出它是否可行时,我得到的只是展示如何 write/run 测试和获得覆盖率 percentages/highlighting 的文章,但没有实际显示它是否可能。
郑重声明,我在我的终端机 linux 和 运行 go test ./... -cover
上使用 VS Code,并在 VS Code 中使用 Ctrl+Shift+P -> "Go: Toggle Test Coverage In Current Package"
进行覆盖突出显示.
现在可以看到更完整的画面,通过评论,您似乎有一堆乱七八糟的测试,由对 Go 经验不足的人编写,您的目标是清理测试以遵循标准 Go惯例。
如果我面临该任务,我的策略可能是通过使用永远不会执行的构建标记来禁用存储库中的所有测试,例如:
// +build skip
package foo
通过 运行 go test ./... -cover
确认所有测试都已禁用,并确认所有地方的覆盖率都是 0%。
然后,逐个测试,我会将每个测试移到适当的位置,并将其放入一个没有 skip
构建标记的新文件中。
如果它是一个大项目,我可能会一次做一个包,或者在其他一些小的、合乎逻辑的步骤中,以避免出现巨大的拉取请求。在这里使用你自己的判断。
我也强烈抵制同时进行任何其他清理或修复的冲动。我的目标是让每个 PR 都成为一个简单的复制粘贴,因此审查很简单,我会保存一份我发现的其他清理工作的列表,以便日后进行。