有没有一种方法可以只执行那些受Go最近更改影响的测试?我们有一个大型的单元测试套件,现在它开始需要一段时间才能完成。我们认为我们只运行那些在第一次通过时受到代码更改影响的测试。
Python有这样的东西:https://github.com/tarpas/pytest-testmon
在Go中有没有办法做到这一点?
有没有一种方法可以只执行那些受Go最近更改影响的测试?我们有一个大型的单元测试套件,现在它开始需要一段时间才能完成。我们认为我们只运行那些在第一次通过时受到代码更改影响的测试。
Python有这样的东西:https://github.com/tarpas/pytest-testmon
在Go中有没有办法做到这一点?
5条答案
按热度按时间flseospp1#
不,在Go中没有办法做到这一点。您所能做的就是将代码拆分为多个包,并一次测试一个包
字符串
而不是全部
型
ijxebb2r2#
go test
在Go 1.10及更新版本中会在包级别自动执行此操作;任何没有变化的包将返回缓存的测试结果,而有变化的包将被重新测试。如果一个包的测试仍然花费太长时间,那就说明你的测试有问题; Go语言中好的测试通常执行得非常快,这意味着你可能需要回顾测试本身,并结合以下几点:
go test
,从而阻止了它缓存结果?您是否出于习惯而使用竞争检测器、分析器或代码覆盖率报告(在不必要的情况下)?vawmfj5a3#
Nabaz可能是你正在寻找的。
来自他们的README.md的示例是
字符串
5f0d552i4#
你可以使用make。如果测试文件中没有更改,它将不会再次重新运行测试。
第一个月
这就是如何编写Makefile。
字符串
2exbekwf5#
不能仅对最后编辑的文件重新运行测试。但是有几种优化运行测试的方法。首先,您必须将项目拆分为逻辑分离的包。这将导致一个变更只需要在包中重新运行测试的情况(在大多数情况下)。其次,您可以只对您要更改的包运行测试,方法是输入
字符串
或者你可以使用build tags。最后一种优化方法是使用
short
测试功能。