我有多個測試類,每個都有它們的SetUp()和TearDown()。GTEST:分別在SetUp和TearDown之前和之後識別
從我讀過RUN_ALL_TEST()之後運行測試用例的序列是未知的。
我想在第一次SetUp調用之前啓動服務,並在調用最後一次TearDown後停止服務。
我該如何做到這一點? 一個例子,將不勝感激。
感謝
我有多個測試類,每個都有它們的SetUp()和TearDown()。GTEST:分別在SetUp和TearDown之前和之後識別
從我讀過RUN_ALL_TEST()之後運行測試用例的序列是未知的。
我想在第一次SetUp調用之前啓動服務,並在調用最後一次TearDown後停止服務。
我該如何做到這一點? 一個例子,將不勝感激。
感謝
你可以使用std::call_once
確保sonething被調用一次。
首先要注意的是,這些不是單元測試,因爲它們需要「服務」才能運行。我建議考慮重新設計應用程序以允許運行測試而不需要外部服務。一種方法可能是使用抽象類和谷歌模擬。
使外部服務存活於正常的TearDown
的問題在於,確保下一個測試將找到一個乾淨的環境成爲您的明確責任:測試可以按照先前測試設置的狀態進行分解。
如果您真的想要走長壽命的外部服務路線,請閱讀gtest advanced guide中的SetUpTestCase
和TearDownTestCase
,這將允許每個測試夾具僅啓動一次該服務。
有一個更危險的Environment
類,允許進行全局設置和拆卸(在高級指南中進行搜索)。
但是,您的測試將變得脆弱而難以調試。我建議重新考慮這種方法。