我有多个测试类,每个都有自己的SetUp()和TearDown()。
从我所看到的,在RUN_ALL_TEST()之后运行测试用例的顺序是未知的。
我想在调用第一个SetUp之前启动服务,并在调用最后一个TearDown后停止服务。
我如何实现这一目标? 一个例子将不胜感激。
由于
答案 0 :(得分:1)
首先观察到这些不是单元测试,因为它们需要"服务"要跑步我建议考虑重新设计应用程序,以便在不需要外部服务的情况下运行测试。一种方法可能是使用抽象类和谷歌模拟。
让外部服务保持正常TearDown
的问题在于,确保下一个测试找到一个干净的环境成为您明确的责任:测试可以通过先前测试设置的状态来打破
如果您真的想沿着长期存在的外部服务的路线前进,请阅读gtest advanced guide中的SetUpTestCase
和TearDownTestCase
,这样只允许每次启动服务一次测试夹具。
有一个更危险的Environment
类允许进行全局设置和拆卸(在高级指南中搜索)。
但同样,您的测试将变得脆弱且难以调试。我建议重新考虑这种方法。
答案 1 :(得分:0)
您可以使用std::call_once
来确保只调用一次声音。