Spring Boot 单元测试(Controller测试与Service测试)

这篇具有很好参考价值的文章主要介绍了Spring Boot 单元测试(Controller测试与Service测试)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎈博客主页:🌈我的主页🌈
🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏
🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩🚩🚩
🎈由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!🌠个人主页



🌟 一、单元测试依赖解析

Spring Boot 单元测试(Controller测试与Service测试)

🌟 二、单元测试注解分析

Spring Boot 单元测试(Controller测试与Service测试)

@SpringBootTest相当于springMvc中单元测试中的applicationContext,用于配置上下文环境

Spring Boot 单元测试(Controller测试与Service测试)

注解内部本身就十分重要的属性:
webEnvironment属性: 指定Web的应用环境

  • MOCK 指定的默认取值 提供一个模拟的Servlet环境(内置Servlet环境并没有启动) 并基于MOCKMvc来进行测试
  • RANDOM_PORT 提供随机的端口 提供一个真正的Servlet
  • DEFINE_PORT 提供默认端口 提供一个真正的Servlet
  • NONE 不提供Web环境
    (一般不用配置,SpringBoot自动配置好的)
    classes属性:指定应用的启动类
    (不需要配置,一般都是SpringBoot自动去寻找)

@Transactional注解:

应用于数据库应用中,涉及到数据库的操作,操作完成后会自动进行一个回滚,避免脏数据,如果使用RANDOM_PORT和DEFINE_PORT的Web应用环境,Http客户端服务器将在不同的线程中运行,分离事务,事务不会回滚

🌟 三、Controller测试

🌟🌟 3.1、测试实体类

public class User {
    private Long id;
    private String username;
    get和set方法省略
}

🌟🌟 3.2、测试Controller类

@RestController
public class UserController {

    @GetMapping("/hello/{id}")
    public User getUserByid(@PathVariable Long id){
        User user = new User();
        user.setUsername("dong");
        user.setId(id);
        return user;
    }
}

🌟🌟 3.2、开启Controller单元测试

Spring Boot 单元测试(Controller测试与Service测试)

进入到测试类中,注入web应用上下文webApplicationContext与mockMvc

 @Autowired
    WebApplicationContext webApplicationContext;
    MockMvc mockMvc;

初始化mockMvc(两种方式)

//初始化mockmvc
    @BeforeEach
    void setUp(){
        //自动去查找Controller
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }
//初始化mockmvc
    @BeforeEach
    void setUp(){
        //自己指定要测试的Controller
        mockMvc = MockMvcBuilders.standaloneSetup(new UserController()).build();
    }

测试Controller

    @Test
    void contextLoads() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders
        		//访问的URL和参数
        		.get("/hello/99")
        		//允许的编码格式
        		.accept(MediaType.APPLICATION_JSON_UTF8))
        		//期望返回的状态码
                .andExpect(MockMvcResultMatchers.status().isOk())
                //编辑期望收到的JSON字符串
                .andExpect(MockMvcResultMatchers.content().string("{\"id\":99,\"username\":\"dong\"}"))
                //输出请求和响应结果
                .andDo(MockMvcResultHandlers.print());
    }

Spring Boot 单元测试(Controller测试与Service测试)
Spring Boot 单元测试(Controller测试与Service测试)

🌟 四、Service测试

🌟🌟 4.1、测试UserDao类

@Repository
public class UserDao {
    public User getUserById(long id){
        User user = new User();
        user.setId(id);
        user.setUsername("dong");
        return user;
    }
}

🌟🌟 4.2、测试Service类

@Service
public class UserService {
    @Autowired
    UserDao userDao;

    public User getUserById(long id){
        return userDao.getUserById(id);
    }
}

🌟🌟 4.3、开启Service单元测试

	//替换UserDao,不使用数据的Dao,使用测试的Dao
    @MockBean
    UserDao userDao;
    @Autowired
    UserService userService;
    @Test
    void Test1(){
        User user = new User();
        user.setUsername("123");
        user.setId(99L);
        //当调用userDao的getUserById方法传入参数99L,就返回一个对象
        Mockito.when(userDao.getUserById(99L)).thenReturn(user);

        User u = userService.getUserById(99L);
        //测试获得的对象与预期的对象是否一致
        Assertions.assertEquals(99L,u.getId());
        Assertions.assertEquals("123",u.getUsername());

    }

Spring Boot 单元测试(Controller测试与Service测试)文章来源地址https://www.toymoban.com/news/detail-425845.html


到了这里,关于Spring Boot 单元测试(Controller测试与Service测试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Mock单元测试----对Controller层进行单独测试,不调用Service层

    前言:根据相关需求,需要对编写的代码进行逻辑检测以及功能的完整性,从而开始了单元测试之路。在编写的中间段时,突然被 不经过Service层直接测试Controller层 这个要求难住了。在我看来,单元测试除了Junit还是Junit,属实是学艺不精,之后接触了Mock,才发现Mock太牛逼了

    2024年02月05日
    浏览(9)
  • 基于Junit4+Mockito+PowerMock实现Controller+Service的单元测试

    基于Junit4+Mockito+PowerMock实现Controller+Service的单元测试

    一 导入的依赖 二 依赖版本 三 controller测试示例代码       controller         controllerTest         测试结果:覆盖率100%         带异常的Controller         带异常提示的ControllerTest         测试结果,覆盖率100%   三 service测试示例代码         service         serviceTest    

    2024年02月14日
    浏览(16)
  • spring boot,DAO层、ENTITY层、SERVICE层、CONTROLLER层之间的关系

    spring boot,DAO层、ENTITY层、SERVICE层、CONTROLLER层之间的关系

    主要用于 定义与数据库对象应的属性,提供get/set方法 ,tostring方法,有参无参构造函数。 DAO层 首先会创建Dao接口 , 接着就可以在配置文件中定义该接口的实现类 ;接着就可以在模块中调用Dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一个类,Dao层的数

    2024年04月10日
    浏览(11)
  • Spring Boot项目中的Controller、Service、Mapper和Entity层的作用与联系

    在Spring Boot项目中,常见的四个层次是Controller层、Service层、Mapper层和Entity层。它们各自承担着不同的职责,但彼此之间存在着紧密的联系。本文将详细介绍这四个层次的作用与联系,并提供相关实例来说明它们之间的关系。 Controller层是Spring Boot应用程序的入口点,用于处理

    2024年02月10日
    浏览(12)
  • <Spring Boot>开发基于三层架构设计:Dao层、Service层、Controller层及案例一

    三层架构设计:基于Spring Boot开发要使用三层架构: 数据访问层(Dao)、业务逻辑层(Service)、控制层(Control-ler) (1)数据访问层(Dao):Dao层是最底层的设计,用户操作数据库。通过MyBatis持久化实现接口开发,XML文件。Dao层的设计步骤:1、在数据库中生成数据库表 2通

    2024年02月15日
    浏览(10)
  • Spring Cloud中Controller单元测试 Junit5 & MockMvc

    在Spring Cloud中进行Controller的单元测试,使用Junit5和Mock。 Controller: 方式一:使用@SpringBootTest + @AutoConfigureMockMvc 方式二:使用@WebMvcTest + @ImportAutoConfiguration(RefreshAutoConfiguration.class) 解决 No Scope registered for scope name \\\'refresh\\\' 异常 注入Mockmvc方式有两种 方式一:(@AutoConfigureMockMvc / @

    2024年02月16日
    浏览(9)
  • Spring Boot单元测试

    Spring Boot单元测试

    ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 Spring Boot 中进行单元测试是一个常见的做法,可以帮助你验证应用程序的各个组件是否按预期工作。所以我们有必要去学习一番! 单元测试

    2024年02月13日
    浏览(8)
  • 【Spring Boot】单元测试

    单元测试在日常项目开发中必不可少,Spring Boot提供了完善的单元测试框架和工具用于测试开发的应用。接下来介绍Spring Boot为单元测试提供了哪些支持,以及如何在Spring Boot项目中进行单元测试。 单元测试主要用于测试单个代码组件,以确保代码按预期方式工作。目前流行的

    2024年02月16日
    浏览(8)
  • Spring boot 集成单元测试

    Spring boot 集成单元测试

    1.引入依赖 2.  3.编写测试类

    2024年02月11日
    浏览(11)
  • 【Spring Boot】SpringBoot 单元测试

    【Spring Boot】SpringBoot 单元测试

    单元测试(unit testing),是指对软件中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试。 1、可以⾮常简单、直观、快速的测试某⼀个功能是否正确。 2、使⽤单元测试可以帮我们在打包的时候,发现⼀些问题,因为在打包之前,所以的单元测试必须通过,否则不能打包

    2024年02月07日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包