我是 Android 单元测试的新手,我正在使用 Mockito 进行测试。
我想测试我的方法,它有一个来自另一个类的方法。我想 stub 那个方法,这样它就不会被调用。我正在使用 doReturn().when()
这样就不会调用原始方法,而是调用原始方法。
这是我的代码:
doReturn(true).when(myclass1mock).methodofclass1();
boolean a = myclass1mock.methodofclass1(); //here it return true
class2spy.methodofclass2(anyvalue);
我测试的方法是:
public class2 {
public void methodofclass2(Value) {
boolean value = class1.methodofclass1(); //here I don't want to call this method
}
}
问题是 class1
的方法每次都会被调用。我想要一些东西,这样 class1.methodofclass1()
就不会被调用。
我正在注入(inject):
@Mock
class1 myclass1mock;
@InjectMocks
class2 myclass2;
@Before
public void setUp() {
myclass2 = new myclass2();
class2spy = Mockito.spy(myclass2);
}
最佳答案
既然你想测试 Class2 的行为,那么我认为你混淆了注释。此外,我会利用 @Spy
注释而不是手动配置它:
@Spy
class1 myclass1Spy;
@InjectMocks
class2 myclass2;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
此外,不要试图不监视正在测试的类(class2)。使用真正的实现。
关于java - 单元测试从另一个类调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43933751/