我在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());
答案 0 :(得分:3)
你可以让getDailyMessage
花时间参数。这使得单元测试变得轻而易举,并增加了在其他环境中使用它的灵活性。例如,您可以使用它来打印昨天的消息。