添加模拟对象后,模拟列表大小不会增加



我正在开发测试用例。这里我使用模拟列表并在其中添加模拟对象。但是assetEquals总是出错:

java.lang.AssertionError: 
Expected :0
Actual   :2

下面是我开发的测试用例:

@Test
    public void Test() {
        MyClass ModelMock = mock(MyClass.class);
        final List<HashMap<String, Object>> listModelMock = mock(List.class);
        final Page currentPage = getMockedCurrentPage();
        final Page childPage1 = mock(Page.class);
        final Page childPage2 = mock(Page.class);
        Iterator<Page> mockIterator = mock(Iterator.class);
        HashMap<String, Object> object1HashMap = new HashMap<>();
        HashMap<String, Object> object2HashMap = new HashMap<>();
        when(currentPage.listChildren()).thenReturn(mockIterator);
        when(mockIterator.hasNext()).thenReturn(true);
        when(mockIterator.next()).thenReturn(childPage1);
        when(mockIterator.next()).thenReturn(childPage2);
        when(childPage1.getPath()).thenReturn("Test");
        when(childPage1.getTitle()).thenReturn("Title of Page1");
        object1HashMap.put("title", childPage1.getTitle());
        object1HashMap.put("src", childPage1.getPath());
        //Fail
        assertEquals(object1HashMap.get(0), "Title of Page1");
        when(childPage2.getPath()).thenReturn("Test");
        when(childPage2.getTitle()).thenReturn("Title of Page2");
        object2HashMap.put("title", childPage2.getTitle());
        object2HashMap.put("src", childPage2.getPath());
        listModelMock.add(object1HashMap);
        listModelMock.add(object2HashMap);
      // Fail   
        assertEquals(listModelMock.get(0).size(), 2);
    }

您的listModelMock是列表的模拟。您没有告诉您的mock框架(据我所见可能是Mockito)在add上做什么。所以add什么都不做

从我对你代码的理解来看,我不认为你真的想嘲笑列表。我想一个真正的ArrayList就可以了。

坦率地说,你测试的是什么类?似乎代码中的每个对象都是模拟对象。这样测试mock框架是没有意义的…

纠错:对于断言,期望值是第一位的。所以是assertEquals(2, listModelMock.get(0).size(),2);

最新更新