【发布时间】:2014-10-03 14:29:33
【问题描述】:
我正在尝试验证对函数的调用不会导致与模拟的任何交互。但是,该模拟 在调用函数之前在类的构造函数中使用。
这不起作用,因为有 与模拟交互:
SomeMock someMock = mock(SomeMock.class);
Subject subject = new Subject(someMock); // interactions with someMock happen here
subject.doNothingWithMock();
verifyNoMoreInteractions(someMock);
这是一个脆弱的解决方案:
SomeMock someMock = mock(SomeMock.class);
Subject subject = new Subject(someMock); // interactions with someMock happen here
verify(someMock).anInteraction();
verify(someMock).anotherInteraction();
subject.doNothingWithMock();
verifyNoMoreInteractions(someMock);
它很脆弱,因为如果构造函数更改为与 mock 进行其他交互,则需要更改测试,即使测试不测试构造函数。
还有其他选择吗?
【问题讨论】:
标签: java unit-testing testing mocking mockito