Junit Mockito正在调用real方法,然后返回不起作用
我读过一些关于它的帖子,但没有解决我的问题。我有一个单例类,这个类的一个方法在另一个类中被调用。我需要模拟这个方法调用Junit Mockito正在调用real方法,然后返回不起作用,junit,mockito,Junit,Mockito,我读过一些关于它的帖子,但没有解决我的问题。我有一个单例类,这个类的一个方法在另一个类中被调用。我需要模拟这个方法调用 Class SingletonClass { public static SingletonClass instance() { ...... return instance; } public boolean methodToBeMocked(Object obj) {
Class SingletonClass
{
public static SingletonClass instance()
{
......
return instance;
}
public boolean methodToBeMocked(Object obj)
{
return false;
}
}
另一类是:
Class A
{
Object doSomeStuff()
{
......
boolean result = SingletonClass.instance.methodToBeMocked();
}
}
Class TestClass{
Class A a = new A();
public void test()
{
SingletonClass singletonClass = mock(SingletonClass.class);
doReturn(true).when(singletonClass).methodToBeMocked(any());
a.doSomeStuff(); // here mocked method returns false
// but if I do this below it returns true !!!!
Object obj = new Object();
boolean result = singletonClass.mockedMethod(obj);
}
}
我在模仿我的测试类中的方法。我曾尝试使用doReturn,而不是其他帖子中建议的Return,但没有任何帮助
我的测试班是:
Class A
{
Object doSomeStuff()
{
......
boolean result = SingletonClass.instance.methodToBeMocked();
}
}
Class TestClass{
Class A a = new A();
public void test()
{
SingletonClass singletonClass = mock(SingletonClass.class);
doReturn(true).when(singletonClass).methodToBeMocked(any());
a.doSomeStuff(); // here mocked method returns false
// but if I do this below it returns true !!!!
Object obj = new Object();
boolean result = singletonClass.mockedMethod(obj);
}
}
那么为什么我在调用a.doSomeStuff时没有实现呢?这里出了什么问题?问题是静态方法
公共静态SingletonClass实例()
。标准mockito库不支持静态方法的模拟。我看到了两种解决方案
公共静态单例类
实例()
为了其他人的利益,我使用下面的mock时希望它不会调用someMock.someMethod(),这与when(someMock.someMethod()).doReturn(“someString”)用法不同
我不明白为什么仍在调用真正的someMethod()。结果表明,该方法被指定为final。Mockito无法模拟静态或最终方法。在这里找到了答案,模拟singleton。可能重复的
Mockito.doReturn("someString").when(someMock).someMethod();