spring boot项目从零开始-(5)测试篇-集成Mockito

青旅半醒 2023-06-30 08:37 75阅读 0赞

spring boot项目从零开始-测试篇-Mockito

  • 简述
      • 目录
  • 步骤
      • pom.xml修改
      • MyMockController.java
      • service
      • test
  • 测试
  • 备注

简述

目录

在这里插入图片描述

步骤

pom.xml修改

  1. <!-- test -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-test</artifactId>
  5. <scope>test</scope>
  6. </dependency>

MyMockController.java

  1. package com.ydfind.start.controller.test;
  2. import com.ydfind.start.service.test.MyMockService;
  3. import io.swagger.annotations.ApiImplicitParam;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8. /**
  9. * mock测试controller类
  10. * @author ydfind
  11. * @date 2020.1.17
  12. */
  13. @RestController
  14. @RequestMapping("/mock")
  15. public class MyMockController {
  16. @Autowired
  17. MyMockService myMockService;
  18. @Autowired
  19. MyMockService myMockService1;
  20. @GetMapping("/name")
  21. @ApiImplicitParam(value = "获取名称")
  22. public String getName(String id) {
  23. return myMockService.getName(id);
  24. }
  25. @GetMapping("/name1")
  26. @ApiImplicitParam(value = "获取名称")
  27. public String getName1(String id) {
  28. return myMockService1.getName(id);
  29. }
  30. }

service

  1. package com.ydfind.start.service.test;
  2. public interface MyMockService {
  3. String getName(String id);
  4. }
  5. package com.ydfind.start.service.test.impl;
  6. import com.ydfind.start.service.test.MyMockService;
  7. import org.springframework.stereotype.Service;
  8. @Service
  9. public class MyMockServiceImpl implements MyMockService {
  10. @Override
  11. public String getName(String id) {
  12. System.out.println(id + ": [" + id + "]");
  13. return id + ": [" + id + "]";
  14. }
  15. }

test

  1. package com.ydfind.start;
  2. import org.junit.runner.RunWith;
  3. import org.springframework.boot.test.context.SpringBootTest;
  4. import org.springframework.test.context.junit4.SpringRunner;
  5. @SpringBootTest(classes = MainApplication.class)
  6. @RunWith(SpringRunner.class)
  7. public abstract class BaseTest {
  8. }
  9. package com.ydfind.start.controller.test;
  10. import com.ydfind.start.BaseTest;
  11. import com.ydfind.start.service.test.MyMockService;
  12. import org.junit.Assert;
  13. import org.junit.Before;
  14. import org.junit.Test;
  15. import org.mockito.Mockito;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.boot.test.mock.mockito.MockBean;
  18. public class MyMockControllerTest extends BaseTest {
  19. @Autowired
  20. MyMockController myMockController;
  21. @MockBean
  22. MyMockService myMockService;
  23. @Before
  24. public void init() {
  25. Mockito.doReturn("default_name").when(myMockService).getName(Mockito.anyString());
  26. }
  27. @Test
  28. public void testGetName() {
  29. Assert.assertEquals(myMockController.getName("1"), "default_name");
  30. }
  31. @Test
  32. public void testGetName1() {
  33. Assert.assertEquals(myMockController.getName1("1"), "default_name");
  34. }
  35. }

测试

因为对service进行了mock,所有service里面的代码是不会执行的。测试用例都会通过

备注

更多mockito请看:https://blog.csdn.net/sndayYU/article/details/103887552
测试相关请看:https://blog.csdn.net/sndayYU/article/details/103863847

发表评论

表情:
评论列表 (有 0 条评论,75人围观)

还没有评论,来说两句吧...

相关阅读