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



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

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

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

我如何做到这一点?请举个例子。

谢谢

第一个观察是,这些不是单元测试,因为它们需要"服务"来运行。我建议考虑重新设计应用程序,以允许在不需要外部服务的情况下运行测试。一种方法是使用抽象类和google mock。

拥有在正常TearDown下存活的外部服务的问题在于,确保下一个测试将找到一个干净的环境成为您的明确责任:测试可能会被前一个测试设置的状态破坏。

如果您真的想要使用长寿命的外部服务,请阅读gtest高级指南中的SetUpTestCaseTearDownTestCase,这将允许每个测试夹具只启动一次服务。

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

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

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

相关内容

最新更新