Java Mockito静态函数mock
我有一门课:Java Mockito静态函数mock,java,unit-testing,mockito,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 testF
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()是一个静态方法,我认为不应该通过对象调用它。
如何返回12,而不使用mockito调用fun()方法的实际实现。
另外,我不想像上面所做的那样,通过Abc类的模拟对象调用fun()。您想要实现的是使用类似的工具
同时,您应该意识到,当您从测试的角度来看代码时,有些代码是“错误的”。如果是这样的话,那么正确的方法就是更改代码,直到它易于测试。大多数情况下,您会发现代码通过这种更改变得“更好”:更少的错误,更易于理解和维护,更易于使用。如果您真的想模拟静态方法,可以使用PowerMock(这扩展了EasyMock和Mockito)。因此,这意味着不可能使用Mockito。可以为什么你认为这段代码是错误的wrt测试透视图???。你也可以建议我一些好的链接来研究Mockito。测试需要能够改变一切必要的东西来模拟你想要看到你的代码存活的情况。因此,如果您有全局变量或函数(
public final static
),并且您需要在测试期间更改它们的行为,那么您应该用可以轻松交换的东西来替换它们。