如果订单已知,是否可以找到GoogleTest运行特定订单的种子



我收到了一份25个测试的列表,以及运行它们的命令,据说这会导致上一次测试失败。不幸的是,用于查找此故障的工具没有保存GoogleTests shuffle用于触发此订单的种子。

所以我当然可以用shuffle来运行测试,并重复大量的次数,直到触发这个顺序,但有很多排列需要处理。据我所知,没有办法只说";嘿,按这个顺序运行这些测试";除了知道触发订单的种子之外,还有GoogleTest。

我希望有一种方法可以在不实际运行测试的情况下找到种子——理想情况下,可以给出所需的顺序并输出种子,但实际上,只要给定gtest_filter值,就会抛出大量潜在的测试订单,触发它们的种子就可以了。

有什么选择吗,或者我只是拖着脚跑,直到我得到为止?

没有这样的选项来指定测试的顺序。

但是,默认情况下(即,如果未启用--gtest_shuffle(,它们按声明顺序运行。

我可以想出三种方法来实现你想要的:

  1. 使用您喜欢的脚本语言(例如bash、python、nodejs等(和正则表达式将测试的原始顺序修改为您想要的顺序,并创建一个新的测试文件,然后在不使用--gtest_shuffle的情况下运行。

  2. 破解谷歌测试的源代码。您可以修改shuffle函数,使代码按照您想要的顺序进行shuffle。

  3. 以编程方式注册测试。我认为你可以按照你想要的顺序一个接一个地注册你的测试,我认为谷歌测试会遵守这个顺序。但这也需要处理您的原始测试文件。

显然,这些方法都不是理想的,但它们可能适用于一次性实验,以找到您想要的顺序。

最新更新