我有一个类:
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类的mock对象调用fun()。
使用PowerMock等工具可以实现您想要实现的目标。
同时,当您从测试的角度来看代码时,您应该意识到有些代码是"错误的"。如果是这种情况,那么正确的方法是更改代码,直到它可以轻松测试为止。大多数时候,你会发现代码会因为这个变化而变得"更好":更少的bug,更容易理解&维护,更易于使用。