我正在用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]和[问]。 –