SpringBoot系列(十)单元测试

本文详细介绍了SpringBoot单元测试的相关内容,包括环境配置、关键注解的解释,如@RunWith、@SpringApplicationConfiguration、@WebAppConfiguration等。还讨论了打包测试的实现,如何将多个测试类组合在一起执行。此外,文章探讨了不同环境的测试和MockMvc的使用,用于模拟外部环境进行测试。
摘要由CSDN通过智能技术生成

一、环境

在SpringBoot环境中添加单元测试maven依赖,依赖如下:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

二、关键注解介绍

  • @RunWith(SpringJUnit4ClassRunner.class),这是JUnit的注解,通过这个注解让SpringJUnit4ClassRunner这个类提供Spring测试上下文。

  • @SpringApplicationConfiguration(classes = 启动类.class),这是Spring Boot注解,为了进行集成测试,需要通过这个注解加载和配置Spring应用上下文。这是一个元注解(meta-annoation),它包含了@ContextConfiguration( loader = SpringApplicationContextLoader.class)这个注解,测试框架通过这个注解使用Spring Boot框架的SpringApplicationContextLoader加载器创建应用上下文。

@WebAppConfiguration 表明是WEB应用环境,不能和@WebIntegrationTest一起使用

  • @WebIntegrationTest(“server.port:0”),这个注解表示当前的测试是集成测试(integration test),因此需要初始化完整的上下文并启动应用程序。这个注解一般和@SpringApplicationConfiguration一起出现。server.port:0指的是让Spring Boot在随机端口上启动Tomcat服务,随后在测试中程序通过@Value(“${local.server.port}”)获得这个端口号,并赋值给port变量。当在Jenkins或其他持续集成服务器上运行测试程序时,这种随机获取端口的能力可以提供测试程序的并行性。

  • @SpringBootTest(classes = AppApplication.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK) 指定启动类,web环境

  • WebEnvironment.MOCK—提供一个Mock的Servlet环境,内置的Servlet容器并没有真实的启动,主要搭配使用@AutoConfigureMockMvc

  • WebEnvironment.RANDOM_PORT — 提供一个真实的Servlet环境,也就是说会启动内置容器,然后使用的是随机端口

  • WebEnvironment.DEFINED_PORT — 这个配置也是提供一个真实的Servlet环境,使用的默认的端口,如果没有配置就是8080

  • WebEnvironment.NONE — 这是个神奇的配置,跟Mock一样也不提供真实的Servlet环境。


推荐使用方式:

在SpringBOOT项目创建的时候,会自动在测试启动类上标有以下注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值