单元测试系列:Mock工具之Mockito实战
发布日期:2021-05-10 01:30:35 浏览次数:29 分类:精选文章

本文共 5144 字,大约阅读时间需要 17 分钟。

Mockito������

Mock������������

1.1 Mockito������

Mockito���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Mockito���������������������������������������������������������������������������������Mockito������������������������������������������������������������������������������������������������������������������

1.2 Mockito������������

���������������������Mockito���������������������������������������������������������Maven������������������������

org.mockito
mockito-core
2.7.19
test

Mockito���������������������������������Bintray���Maven Central Repository��������� Maven������������������������������������������������������������������������Mockito 2.0���������������������������mockito-all������������������mockito-core���������

1.3 ���������������������

Mockito������������������������������������������������������������������

mock(Class classToMock);
mock(Class classToMock, String name);
mock(Class classToMock, Answer defaultAnswer);
mock(Class classToMock, MockSettings mockSettings);
mock(Class classToMock, ReturnValues returnValues);

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

1.4 ������������������������������������

���������������������������������������������������������������������������������������������

when(mockedList.clear()).thenReturn(null);

���������thenReturn������������������������������������������������������������������������������doThrow������������������

doThrow(new RuntimeException("oose������")).when(mockedList).clear();

���������������doAnswer���������������������������������������������������Answer������������������������������������������������������������������������������������

1.5 ������������������������

Mock ������������������������������������������������������������������������������verify���������������������������������������������������������������������������������������������������

verify(mock, times(1)).getPerson(1);
verify(mockDao, times(1)).update(isA(Person.class));

������������������������������������������������������������������������������������������������������

1.6 Demo

������������������������Mockito���������������������������������������������������������������������

  • Person������������������������������������������������������������������
  • PersonDao������������������Person������������������������������
  • PersonService������������PersonDao���������������������������������

������������������������������Junit������������������������������������������������������������������������������

public class PersonServiceTest {
private PersonDao mockDao;
private PersonService personService;
@Before
public void setUp() throws Exception {
mockDao = mock(PersonDao.class);
when(mockDao.getPerson(1)).thenReturn(new Person(1, "Person1"));
when(mockDao.update(isA(Person.class))).thenReturn(true);
personService = new PersonService(mockDao);
}
@Test
public void testUpdate() throws Exception {
boolean result = personService.update(1, "new name");
assertTrue(result);
verify(mockDao, times(1)).getPerson(1);
verify(mockDao, times(1)).update(isA(Person.class));
}
@Test
public void testUpdateNotFind() throws Exception {
boolean result = personService.update(2, "new name");
assertFalse(result);
verify(mockDao, times(1)).getPerson(1);
verify(mockDao, never()).update(isA(Person.class));
}
}

������Junit������������������������������������������������������������������������������������id���1���Person������������PersonDao���getPerson���������������������������Person������������update���������������true���

2 ������������������������

������������������������������������������������������������������������JaCoCo������������������������������������������������������������������������������������������������������������������������������������JaCoCo���������������������������������������������

���������������������������������

  • Junit���������������������������
  • JaCoCo���������������������������
  • EclEmma������������������������Java���������

������������ ����age������������������������������������������������������������������������������������������������������������JaCoCo���������������������������������������������������������IDE���������

���������������������������������

���Eclipse���������������Coverage������ ������������������������������������������������������������������

  • ���������Coverage���������������������������������Coverage Report������
  • ���������������Target Zip File���
  • ��������� Finish������������������������������������
  • ������������������HTML���������������������������������������������������������������������������������������������������������������������������������������������������������

    上一篇:深入浅出parallelStream
    下一篇:kubernetes核心概念总结

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年04月09日 23时07分02秒