PowerMocking静态不返回预期对象 [英] PowerMocking static does not return expected object

查看:151
本文介绍了PowerMocking静态不返回预期对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在模拟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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆