C ++设置本地时间的日期

时间:2018-02-14 20:51:37

标签: c++ unit-testing datetime

我在C ++ 11中有一段C ++代码,它使用localtime函数(doc)来获取时间。如果这一天是我的生日,则会返回生日消息。

std::string message = getDailyMessage();

我现在想做一个单元测试,确定代码是否在我的生日而不是我的生日输出正确的值。有没有办法以编程方式设置localtime在两个相邻调用之前返回的值?有没有可能不用实际的系统时间?

setTime(NOT_BIRTHDAY);
EXPECT_STREQ(NOT_BIRTHDAY_MESSAGE, getDailyMessage());
setTime(BIRTHDAY);
EXPECT_STREQ(BIRTDAY_MESSAGE, getDailyMessage());

1 个答案:

答案 0 :(得分:3)

你可以让getDailyMessage花时间参数。这使得单元测试变得轻而易举,并增加了在其他环境中使用它的灵活性。例如,您可以使用它来打印昨天的消息。