18

google-test 如何为测试用例制作测试序列(or order of test case execution)

假设我有 5 个测试用例。

TEST(First, first)
TEST(Secnd, secnd)
TEST(Third, third)
...
TEST(Fifth, fifth)

google-test上面的测试用例怎么测试?我的意思是按什么顺序?或者我们可以提供任何测试序列吗?

4

4 回答 4

18

默认情况下,它将按照在链接时找到它们的顺序对其进行测试,这取决于您的工具。

您可以选择要运行的测试,例如子集或单个测试。

还有一个以随机顺序运行它们的选项。

于 2012-10-05T09:25:20.810 回答
5

洗牌测试一章中 googletest 的高级参考页面告诉我们:

默认情况下,Google Test 使用从当前时间计算的随机种子。因此,您每次都会收到不同的订单。

这实际上是一种很好的单元测试方式,因为测试不应该依赖于执行的顺序。

据我所知,没有办法设置测试执行的顺序。您可以设置的唯一参数是种子,用于设置相同的执行顺序。

于 2012-10-05T09:25:42.810 回答
3

默认情况下,它们按声明顺序运行。正如其他人所说,您必须提供标志--gtest_shuffle来打乱它们。

于 2016-12-07T15:09:03.090 回答
2

即使您可以猜测执行顺序的某些模式(如书面或链接的),您也不应该依赖它。

不过,它会在不同的处决中重复。如果您不希望它发生,您可以使用--gtest_shuffle. 根据随机种子,以随机顺序运行测试。

如果失败,您可以使用--gtest_random_seed=该数字并重复确切的顺序(以调查失败的原因)。

也就是说,随机性并不完整:

  • 测试套件将以随机顺序运行
  • 测试套件中的测试将以随机顺序运行

如果不以这种方式运行,SetUpTestSuite 和 TearDownTestSuite 方法将混合使用。但是,您不需要固定装置来进行此分组。

于 2020-04-14T09:01:50.107 回答