栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Mockito验证不再与任何模拟互动

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mockito验证不再与任何模拟互动

由于verifyNoMoreInteractions带有对象数组,因此我们必须找到一种方法来获取所有创建的模拟。

您可以创建此类

public class MocksCollector {    private final List<Object> createdMocks;    public MocksCollector() {        createdMocks = new linkedList<Object>();        final MockingProgress progress = new ThreadSafeMockingProgress();        progress.setListener(new CollectCreatedMocks(createdMocks));    }    public Object[] getMocks() {        return createdMocks.toArray();    }}

然后在测试中使用它:

    public class ATest {    private final MocksCollector mocksCollector = new MocksCollector();    @Test    public void test() throws Exception {        A a1 = mock(A.class);        A a2 = mock(A.class);        A a3 = mock(A.class);        assertEquals("wrong amount of mocks", 3, mocksCollector.getMocks().length);        verifyNoMoreInteractions(mocksCollector.getMocks());        a3.doSomething();        verifyNoMoreInteractions(mocksCollector.getMocks()); // fail    }}

或带有注释:

@RunWith(MockitoJUnitRunner.class)public class A2Test {    private final MocksCollector mocksCollector = new MocksCollector();    @Mock    private A a1;    @Mock    private A a2;    @Mock    private A a3;    @Test    public void test() throws Exception {        assertEquals("wrong amount of mocks", 3, mocksCollector.getMocks().length);        verifyNoMoreInteractions(mocksCollector.getMocks());        a2.doSomething();        verifyNoMoreInteractions(mocksCollector.getMocks()); // fail    }}

它可以工作,但是增加了对嘲笑内部的依赖。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453607.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号