PowerMocking静态不返回预期对象 [英] PowerMocking static does not return expected object
问题描述
我在模拟Calendar.getInstance()
时遇到问题.当您现在使用此方法时,将返回Calendar-我正在嘲笑的对象.
I have a problem mocking Calendar.getInstance()
. As you now this method returns a Calendar - the object I am mocking.
现在我的代码如下:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Calendar.class)
public class SurveillanceDatabaseTest {
@Test
public void testFailingDatabase() throws Exception {
mockStatic(Calendar.class);
Calendar calendar = new GregorianCalendar();
calendar.add(Calendar.HOUR, 1);
when(Calendar.getInstance()).thenReturn(calendar);
final Surveillance surveillance = new Surveillance();
surveillance.checkDatabase();
}
}
Calendar.getInstance()
在surveillance.checkDatabase()
中被多次调用,并且每次它都是一个新对象而不是Calendar的预期模拟时.
Calendar.getInstance()
gets called various times in surveillance.checkDatabase()
and every time it is a new object and not the expected mock of Calendar.
有人可以看到我在做什么错吗?
Can anyone see what I am doing wrong?
推荐答案
似乎您需要在PrepareForTest标记中添加目标测试类:
@PrepareForTest({Calendar.class,Surveillance.class})
It seems that you need to add the target test class in the PrepareForTest tag:
@PrepareForTest({ Calendar.class, Surveillance.class })
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Calendar.class, Surveillance.class })
public class SurveillanceDatabaseTest {
@Test
public void testFailingDatabase() throws Exception {
mockStatic(Calendar.class);
Calendar calendar = new GregorianCalendar();
calendar.add(Calendar.HOUR, 1);
when(Calendar.getInstance()).thenReturn(calendar);
final Surveillance surveillance = new Surveillance();
surveillance.checkDatabase();
}
}
如果我们将Surveillance类移到MockCalendarTest类之外的某个地方,那么即使Tom Tresansky的上述示例也将需要它.
Even Tom Tresansky's example above will need it if we move the Surveillance class to somewhere outside MockCalendarTest class.
这篇关于PowerMocking静态不返回预期对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!