Java 我如何验证,从某一点开始,没有更多的与模拟的交互?

Java 我如何验证,从某一点开始,没有更多的与模拟的交互?,java,unit-testing,testing,mocking,mockito,Java,Unit Testing,Testing,Mocking,Mockito,我试图验证对函数的调用不会导致与模拟的任何交互。但是,在调用函数之前,在类的构造函数中使用该模拟 这不起作用,因为存在与模拟的交互: SomeMock SomeMock=mock(SomeMock.class); 主题=新主题(someMock);//与someMock的交互发生在这里 subject.donothing with mock(); 验证NomoreInteractions(someMock); 这是一个脆弱的解决方案: SomeMock SomeMock=mock(SomeMo

我试图验证对函数的调用不会导致与模拟的任何交互。但是,在调用函数之前,在类的构造函数中使用该模拟

这不起作用,因为存在与模拟的交互:

SomeMock SomeMock=mock(SomeMock.class);
主题=新主题(someMock);//与someMock的交互发生在这里
subject.donothing with mock();
验证NomoreInteractions(someMock);
这是一个脆弱的解决方案:

SomeMock SomeMock=mock(SomeMock.class);
主题=新主题(someMock);//与someMock的交互发生在这里
验证(someMock).交互();
验证(someMock).anotherInteraction();
subject.donothing with mock();
验证NomoreInteractions(someMock);
它是脆弱的,因为如果构造函数更改为与mock进行其他交互,则需要更改测试,即使测试没有测试构造函数


有其他选择吗?

您可以重置mock:
Mockito.reset(someMock)或只是
重置(someMock)静态导入Mockito时

此方法接受可变数量的参数,因此您甚至可以执行
reset(someMock1,someMock2,…)