我有接口
Interface MyInterface {
myMethodToBeVerified (String, String);
}
接口的实现是
class MyClassToBeTested implements MyInterface {
myMethodToBeVerified(String, String) {
…….
}
}
我还有一节课
class MyClass {
MyInterface myObj = new MyClassToBeTested();
public void abc(){
myObj.myMethodToBeVerified (new String(“a”), new String(“b”));
}
}
我正在尝试为MyClass编写JUnit。我已经做了
class MyClassTest {
MyClass myClass = new MyClass();
@Mock
MyInterface myInterface;
testAbc(){
myClass.abc();
verify(myInterface).myMethodToBeVerified(new String(“a”), new String(“b”));
}
}
但我需要mockito但没有调用,实际上在验证调用时与这个mock没有任何交互。
谁能提出一些解决方案。
您需要在所测试的类中注入mock。现在你是在和真实的对象交互,而不是和模拟对象交互。您可以通过以下方式修复代码:
void testAbc(){
myClass.myObj = myInteface;
myClass.abc();
verify(myInterface).myMethodToBeVerified(new String("a"), new String("b"));
}
虽然将所有初始化代码提取到@before
中会是更明智的选择
@Before
void setUp(){
myClass = new myClass();
myClass.myObj = myInteface;
}
@Test
void testAbc(){
myClass.abc();
verify(myInterface).myMethodToBeVerified(new String("a"), new String("b"));
}
更新下面是异常消息: 更新2用真实实例替换mocked WithDefinitions对象后,我得到以下输出:
一开始我想对我的英语感到抱歉。 这是我测试后得到的: 有人能告诉我我做错了什么吗?
在执行以下步骤后,我得到了错误:想要但没有调用:实际上,与这个模拟没有任何交互。我不明白我在这里遗漏了什么。
MyDriveRepository.getMyDriveItemSelectedPathuri一直返回null。我试着查看以下链接,但没有找到解决问题的方法。
下面是我要测试的代码类 我的测试类
我尝试了例外情况下给出的解决方案:mockito想要但没有调用,实际上与这个mock没有任何交互,而这个mockito也想要但没有调用:实际上,与这个mock没有任何交互但仍然得到相同的错误。我是不是漏掉了什么?以下是me的实现:-