【发布时间】:2021-06-16 14:09:29
【问题描述】:
我的代码看起来如何
@RunWith(PowerMockRunner.class)
@PrepareForTest({Calendar.class})
public class TestSomething {
@Test
public void mockCalendar() {
Calendar calendar = Calendar.getInstance();
PowerMockito.mockStatic(Calendar.class);
//a few attempts here
PowerMockito.when(Calendar.getInstance()).thenReturn(calendar);
// or
BDDMockito.when(Calendar.getInstance()).thenReturn(calendar);
//or
Mockito.when(Calendar.getInstance()).thenReturn(calendar);
//or
BDDMockito.given(Calendar.getInstance()).willReturn(calendar);
}
}
但在任何情况下,Calendar 都会调用真正的方法 .getInstance()。 在以前的情况下,BDDMockito 一切正常,但现在我遇到了问题
【问题讨论】:
-
尝试使用
PowerMockito#when。 -
@akortex91 我试过
PowerMockito.when(Calendar.getInstance()) .thenThrow(RuntimeException.class);但它不起作用 -
你想达到什么目的?你能分享你的完整代码吗?
-
我正在尝试实现模拟 Calendar.getInstance();因为我想使用相同的日历 - 在测试和运行测试的代码中
-
当我尝试它时似乎工作正常(假设在
@PrepareForTest您使用使用Calendar类的类)。正如我之前所说,共享您的测试代码可能有助于您解决此问题。
标签: java testing junit mockito powermockito