好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java单元测试Mockito的使用详解

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的使用详解的详细内容...

  阅读:25次