代码之家  ›  专栏  ›  技术社区  ›  user3813133

Mockito获取所有模拟对象

  •  2
  • user3813133  · 技术社区  · 8 年前

    我想得到所有模拟对象的列表。使用Mockito的早期版本,我可以做到这一点:

    List<Object> createdMocks = new LinkedList<Object>();
    MockingProgress progress = new ThreadSafeMockingProgress();
    progress.setListener(new CollectCreatedMocks(createdMocks));
    

    Mockito的最新2.8版本中删除了这些侦听器,是否有其他替代方案?

    1 回复  |  直到 8 年前
        1
  •  9
  •   glytching    8 年前

    自Mockito 2。x这已被的实现所取代 org.mockito.listeners.MockitoListener 你是这样参与的:

    Mockito.framework().addListener()
    

    例如:

    @Test
    public void listAllMocks() {
        List<Object> mocks = new ArrayList<>();
    
        // can be replaced by a lambda if using java 8+
        Mockito.framework().addListener(new MockCreationListener() {
            @Override
            public void onMockCreated(Object mock, MockCreationSettings settings) {
                mocks.add(mock);
            }
        });
    
        A a = Mockito.mock(A.class);
        B b = Mockito.mock(B.class);
    
        // ... do something with a, b
    
        // verify
        assertThat(mocks.size(), is(2));
        assertThat(mocks, hasItem(a));
        assertThat(mocks, hasItem(b));
    }