Mockito简介
调用mock对象的方法时,不会执行真实的方法,而是返回类型的默认值,如object返回null, int返回0等,否则通过指定when(方法).thenReturn(value)来指定方法的返回值。同时mock对象可以进行跟踪,使用verify方法看是否已经被调用过。而spy对象,默认会执行真实方法,返回值可以通过when.thenReturn进行覆盖。可见mock只要避开了执行一些方法,直接返回指定的值,方便做其他测试。
Service测试用例
需要的依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version> 4.12 </version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version> 2.23 . 4 </version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> <version> 2.1 . 13 .RELEASE</version> </dependency> |
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
@RunWith (MockitoJUnitRunner. class ) @SpringBootTest () public class StudentServiceTest { @InjectMocks StudentService studentService = new StudentServiceImpl(); @Mock StudentDAO studentDAO;
@Before public void before(){ Mockito.doReturn( new StudentDO( "张三" , 18 )).when(studentDAO).read(Mockito.anyString()); }
@Test public void testRead(){ StudentDO read = studentService.read( "" ); Assert.assertNotNull(read); } } |
Controller测试用例
需要的依赖
1 2 3 4 5 6 7 8 9 10 |
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version> 5.1 . 14 .RELEASE</version> </dependency> <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version> 2.4 . 0 </version> </dependency> |
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
@RunWith (MockitoJUnitRunner. class ) @SpringBootTest () public class StudentControllerTest { @Resource MockMvc mockMvc;
@InjectMocks StudentController studentController; @Mock StudentService studentService;
@Before public void before() { mockMvc = MockMvcBuilders.standaloneSetup(studentController).build(); Mockito.doReturn( new StudentDO( "张三" , 18 )).when(studentService).read(Mockito.anyString()); }
@Test public void testRead() throws Exception { MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get( "/student/read/1" ); mockMvc.perform(request) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath( "$.name" ).value( "张三" )); }
} |
到此这篇关于单元测试-Mockito的使用的文章就介绍到这了,更多相关单元测试 Mockito使用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://HdhCmsTestcnblogs测试数据/ffeiyang/p/14981431.html
查看更多关于Java单元测试Mockito的使用详解的详细内容...