如何在Googletest中运行两个不同的测试
How to run two different tests in Googletest
假设我有两个/多个不同的测试需要在两次迭代中在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............
但谷歌测试只采用"*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()
调用的最后一个非零值。
int main(int argc, char **argv) {
int i = 1;
vector<string> str;
str.push_back("*first*:*second*");
str.push_back("*third*:*fourth*");
str.push_back("*fifth.fifthtestname*");
for(i = 0; i != str.size(); i++)
{
::testing::GTEST_FLAG(filter) = str.at(i);
InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
// getchar();
}
getchar();
}
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何在for循环中包含两个索引值的测试条件
- 测试两个类型列表中的所有组合
- 如何使用谷歌测试检查两个枚举类元素的相等性?
- 在单元测试中,如何在不使用 operator== 的情况下比较两个对象,这可能会错过新成员?
- 类型测试对象的动态数组的这两个声明之间的区别?
- 给定两个类,我如何可能地测试等效行为
- 有什么方法可以测试来自同一类的两个作业对象吗
- 使用谷歌测试中的EXPECT_EQ比较两个boost::变体对象
- 如何在Googletest中运行两个不同的测试
- 如何在VS2013上比较两个迭代器进行单元测试
- 忽略两个C++宏之间的代码(防止创建静态单元测试对象)
- 如何测试两个pthread互斥体的相等性
- 测试两个迭代器是否来自同一对象
- 使用CATCH C++单元测试框架测试两个std::向量是否相等
- 在OpenGL中,我如何在两个深度缓冲区之间进行深度测试
- 用两个堆栈实现队列——脱队列测试问题
- 链接器错误 - 链接两个"application"类型的项目以使用 Google 测试