gpt4 book ai didi

c++ - 如何在 Googletest 中运行两个不同的测试

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:13 24 4
gpt4 key购买 nike

假设我有两个/许多不同的测试需要在 gtest 中进行两次迭代。那么,如何进行呢?我尝试了我的方法,但它失败了。我写的,

::testing::GTEST_FLAG(repeat) = 2; //may be 2 or 3 or so on...
switch(i) //int i = 1;
{
case 1:
::testing::GTEST_FLAG(filter) = "*first*:*second*";
i++; break;
case 2:
::testing::GTEST_FLAG(filter) = "*third*:*fourth*";
i++; break;
and so on............

但 Google 测试仅采用 "*first*:*second*" 并运行两次。请帮我。我的要求是 Gtest 应该一个一个地运行所有的测试用例。例如,首先它将执行 case 1: 然后是 case 2: 等等...

最佳答案

我认为您不能使用 ::testing::GTEST_FLAG(repeat)

但是,您可以通过以下方式实现您的目标:

#include "gtest/gtest.h"

int RunTests(int iteration) {
switch(iteration) {
case 1: ::testing::GTEST_FLAG(filter) = "*first*:*second*"; break;
case 2: ::testing::GTEST_FLAG(filter) = "*third*:*fourth*"; break;
default: ::testing::GTEST_FLAG(filter) = "*";
}
return RUN_ALL_TESTS();
}

int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
int final_result(0);
for (int i(0); i < 3; ++i) {
int result(RunTests(i));
if (result != 0)
final_result = result;
}
return final_result;
}

我不确定当使用GTEST_FLAG(repeat) 时gtest 是如何计算RUN_ALL_TESTS() 的返回值的,但是这里是main如果所有测试都通过,将返回 0,否则它将返回 RUN_ALL_TESTS() 调用的最后一个非零值。

关于c++ - 如何在 Googletest 中运行两个不同的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com