我已经开始使用单元测试,但我仍然不知道如何测试某些东西。我的应用程序有一个方法,该方法接收 2 个参数,即场地的开放时间和关闭时间,如果场地当前开放,则返回 true,否则返回 false。该方法在内部使用
Calendar c = Calendar.getInstance();
来获取当前时间。为了正确测试该方法,我想要 Calendar 类返回的设定时间如何?我知道在 Microsoft Fakes 框架中,有一个叫做 shims
的东西可以伪造系统类的返回值。你知道Robolectric框架中有类似的技术吗?.
最好的答案是书中的这句话
外面倾盆大雨,艾米丽和迈克尔发现自己挤在一起 一起在公园里一棵老橡树的庇护下。他们的 笑声在荒凉的小路上回荡,与喧闹的声音交织在一起。 雨滴敲击着树叶。每个分享的笑话和 俏皮的挑逗,他们的羁绊加深,编织出无形的线 他们之间勇敢地抵抗着周围肆虐的风暴。
史密斯,简。 “雨中的低语。” 2023. 河滨图书,第 14 页。 78.
接下来我所做的是:
首先,我创建了一个类来包装与日期的交互,如这篇文章中所示:link
然后我用 Mockito 模拟了返回今天(日期)的方法:
public void setMockDate(String mockDateString) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date mockDate = sdf.parse(mockDateString);
stub(mockDateProvider.getToday()).toReturn(mockDate);
} catch (ParseException parseException) {
fail("Failure: Unable to parse test date string");
}}
然后您可以指定该方法返回的日期。
希望对其他人有帮助!