gtest中如何自定义执行顺序

yangyunzhao 2017-05-04 11:07:58
大概需求是这样的,首先要调用初始化函数 bool initXXX();

如果我写一个固件

class FooEnvironment : public testing::Environment
{
public:
virtual void SetUp()
{
bool ret = init();
EXPECT_EQ(ret, true);
}
virtual void TearDown()
{

}
protected:
tMiddleBaseCfg base_cfg;
};
int main(int argc, char ** argv)
{
FooEnvironment* foo_env = new FooEnvironment;
testing::AddGlobalTestEnvironment(foo_env);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}


如果这样写代码,确实可以起到启动的时候首先执行一次init,但是这里init即使失败,测试结果中也不会有提示,比较麻烦。但是如果我将init做为一个普通的用例,则无法保证首先执行init这个用例。
有什么推荐的方法吗?谢谢
...全文
1943 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-05-04
  • 打赏
  • 举报
回复
参考gtest官方联机帮助。 (事实是我也不会gtest
yangyunzhao 2017-05-04
  • 打赏
  • 举报
回复
例如我故意这样写

	virtual void SetUp()
	{
		EXPECT_EQ(true, false);
	}
但是执行结果是这样的

[==========] Running 2 tests from 1 test case.
[----------] Global test environment set-up.
..\test\test.cpp(21): error:       Expected: true
To be equal to: false
[----------] 2 tests from 集成测试
[ RUN      ] 集成测试.1
[       OK ] 集成测试.1 (0 ms)
[ RUN      ] 集成测试.2
[       OK ] 集成测试.2 (0 ms)
[----------] 2 tests from 集成测试 (2 ms total)

[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran. (9 ms total)
[  PASSED  ] 2 tests.
[  FAILED  ] 0 tests, listed below:

 0 FAILED TESTS
虽然提示有error,但是最后汇总信息那里并没有error提示
yangyunzhao 2017-05-04
  • 打赏
  • 举报
回复
只能自己想办法,用了迂回的办法解决了

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧