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

Jed*_*olf 2 c++ googletest

我收到了一份包含 25 项测试的列表以及运行这些测试的命令,据说这会导致最后一次测试失败。不幸的是,用于查找此故障的工具不会保存 GoogleTests shuffle 用来触发此订单的种子。

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

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

有没有什么选择,或者我只是随机播放直到得到它?

Ari*_*Ari 5

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

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

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

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

  2. 侵入 Google 测试的源代码。您可以修改shuffle 函数以按照您想要的顺序对代码进行打乱。

  3. 研究以编程方式注册测试。我认为您可以按照您想要的顺序逐一注册您的测试,并且我认为 Googletest 会遵守该顺序。但这也需要处理您的原始测试文件。

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