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

Is it possible to find the seed for GoogleTest to run a specific order if the order is known?

我得到了 25 项测试的列表和 运行 它们的命令,据推测这会导致最后一次测试失败。不幸的是,用于发现此故障的工具不会保存 GoogleTests shuffle 用于触发此订单的种子。

所以我当然可以 运行 测试随机播放并重复大量次直到触发此顺序,但是有很多排列需要完成。据我所知,除了知道触发订单的种子之外,没有办法只用 GoogleTest 说“嘿 运行 按此顺序进行这些测试”。

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

有没有其他选择,或者我只是 运行 洗牌直到我找到它?

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

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

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

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

  2. 侵入 Google 测试的源代码。您可以修改 the shuffle function 以按照您想要的顺序打乱代码。

  3. 调查Registering tests programmatically。我认为您可以按照您想要的顺序一个一个地注册您的测试,我认为 Googletest 会遵守该顺序。但这也需要处理你的原始测试文件。

显然,none 这些方法是理想的,但它们可能适用于 one-off 实验以找到您想要的顺序。