2016-11-09 1336 views
1

我有多個測試類,每個都有它們的SetUp()和TearDown()。GTEST:分別在SetUp和TearDown之前和之後識別

從我讀過RUN_ALL_TEST()之後運行測試用例的序列是未知的。

我想在第一次SetUp調用之前啓動服務,並在調用最後一次TearDown後停止服務。

我該如何做到這一點? 一個例子,將不勝感激。

感謝

回答

0

你可以使用std::call_once確保sonething被調用一次。

1

首先要注意的是,這些不是單元測試,因爲它們需要「服務」才能運行。我建議考慮重新設計應用程序以允許運行測試而不需要外部服務。一種方法可能是使用抽象類和谷歌模擬。

使外部服務存活於正常的TearDown的問題在於,確保下一個測試將找到一個乾淨的環境成爲您的明確責任:測試可以按照先前測試設置的狀態進行分解。

如果您真的想要走長壽命的外部服務路線,請閱讀gtest advanced guide中的SetUpTestCaseTearDownTestCase,這將允許每個測試夾具僅啓動一次該服務。

有一個更危險的Environment類,允許進行全局設置和拆卸(在高級指南中進行搜索)。

但是,您的測試將變得脆弱而難以調試。我建議重新考慮這種方法。