GTEST:分别在SetUp和TearDown之前和之后识别

时间:2016-11-09 10:51:00

标签: c++ googletest

我有多个测试类,每个都有自己的SetUp()和TearDown()。

从我所看到的,在RUN_ALL_TEST()之后运行测试用例的顺序是未知的。

我想在调用第一个SetUp之前启动服务,并在调用最后一个TearDown后停止服务。

我如何实现这一目标? 一个例子将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

首先观察到这些不是单元测试,因为它们需要"服务"要跑步我建议考虑重新设计应用程序,以便在不需要外部服务的情况下运行测试。一种方法可能是使用抽象类和谷歌模拟。

让外部服务保持正常TearDown的问题在于,确保下一个测试找到一个干净的环境成为您明确的责任:测试可以通过先前测试设置的状态来打破

如果您真的想沿着长期存在的外部服务的路线前进,请阅读gtest advanced guide中的SetUpTestCaseTearDownTestCase,这样只允许每次启动服务一次测试夹具。

有一个更危险的Environment类允许进行全局设置和拆卸(在高级指南中搜索)。

但同样,您的测试将变得脆弱且难以调试。我建议重新考虑这种方法。

答案 1 :(得分:0)

您可以使用std::call_once来确保只调用一次声音。