Mockito静态函数模拟

时间:2014-04-17 13:31:24

标签: java unit-testing mockito

我有一个班级:

class Abc
{
    public static int fun() {
           // some stuff
           return 5;
    }
}

我有另一个班级:

class Pqr 
{
     public int funToTest() {
            return Abc.fun();

     }
}

我使用mockito进行如下测试:

class PqrTest {
    public int testFunToTest() {
          Abc ob = Mockito.mock(Abc.class);
          Mockito.when(ob.fun()).thenReturn(12);   
    }
}

现在像这样测试工作正常。但是因为fun()是一个静态方法,所以我不认为它应该通过一个对象来调用。 如何在不使用mockito调用fun()方法的实际实现的情况下返回12。 另外,我不想像上面所做的那样通过Abc类的模拟对象调用fun()。

1 个答案:

答案 0 :(得分:1)

您可以使用PowerMock等工具实现目标。

同时,您应该知道,从测试角度来看,存在一些“错误”的代码。如果是这种情况,那么正确的方法是更改​​代码,直到它易于测试。大多数情况下,你会发现这个变化使代码变得“更好”:减少错误,更容易理解和维护,更容易使用。