Golang:如何在不重新编译的情况下反复运行"go test"?

jac*_*bsa 8 xargs go

有没有办法让我轻松地多次运行Go测试,第一次失败时停止?我当然可以这样做:

for i in {1..1000}; do go test ./mypkg && done
Run Code Online (Sandbox Code Playgroud)

但这会导致每次重新编译,与测试本身相比非常慢.我想我可以通过一些巧妙的-exec 旗帜应用来做到这一点xargs,但我不擅长单线.

如果它在一千次中失败一两次,那么与一些相似的清晰详细输出并行地多次运行它的加分点.

Eva*_*van 7

根据帮助你可以传递-c旗帜go test:

将测试二进制文件编译为pkg.test但不运行它.(其中pkg是包的导入路径的最后一个元素.)

所以你至少可以避免每次重新编译.

  • 这是如何回答这个问题的?问题是如何在不重新编译的情况下运行测试! (2认同)

gsf*_*gsf 7

它可能是新功能 - 但您可以使用它-count N来指定重复每个测试的次数.可能值得一提的是它将使用单个编译来运行它们.

我要感谢FlorinPăţan在最近的一次Github讨论中注意到了.