我正在用C++測試谷歌測試單元測試。在我們的公司代碼中,我們仍然存在問題,例如CTime的系統數據類型使用例如實際系統的時區(我們使用CTime數據類型與生產代碼中的相同方式)。對於單元測試,我們想要模擬不同的時區,因爲我們有很多問題。C++:如何使用谷歌測試在單元測試中模擬不同的時區
我已經投入了幾個小時研究別人怎麼做,因爲它不可能,其他公司沒有這個問題:)但我沒有找到解決方案。 我的想法如下: CTime本身可以節省UTC時間,並將其按需轉換爲當地時間。我的假設是所有這些函數都需要在timezonapi.h中聲明的GetTimeZoneInformation()函數。
WINBASEAPI
_Success_(return != TIME_ZONE_ID_INVALID)
DWORD
WINAPI
GetTimeZoneInformation(_Out_ LPTIME_ZONE_INFORMATION lpTimeZoneInformation);
因此,解決方案將可能是由某個自定義函數,然後返回一個對象,我可以根據需要改變來交換這個GetTimeZoneInformation()功能。但我不知道該怎麼做,我也不知道這是否正常工作,因爲它可能只在應用程序啓動時調用此函數一次。
有誰知道如何處理這個話題?我不想改變任何行爲,我只想在不破壞任何時間計算機制的情況下設置自己的時區。最好的情況是,如果我能以某種方式模擬這些調用而不更改生產代碼。 事情是,這個程序是非常大,老,... ...儘可能少變化總是最好:)
如果我還沒有找到一個已經存在的職位,解決了我的問題,然後我真的很抱歉,因爲我沒有找到它,或者我沒有得到這可以幫助我。
它看起來像你想我們爲你寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出以及實際獲得的輸出(控制檯輸出,回溯等)。您提供的細節越多,您可能會收到的答案就越多。檢查[FAQ]和[問]。 –