spring boot单元测试

本文介绍如何使用Spring Boot 1.3.3版本进行单元测试配置。通过@RunWith, @SpringApplicationConfiguration, 和@WebAppConfiguration注解,实现SpringJUnit4ClassRunner的支持,并详细展示了测试类的设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var code = "7d64274c-452e-49c7-8572-1878c7f61c98"
import com.butler.websocket.Application;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
/**
 * Created by czw on 2017/6/30
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
public class DbTest {
    private Logger logger = LoggerFactory.getLogger(DbTest.class);
    @Test
    public void test(){
        logger.info("单元测试 ========> ~@^_^@~");
    }
}

解释:

//添加SpringJUnit支持
@RunWith(SpringJUnit4ClassRunner.class)
//指定SpringBoot启动类
@SpringApplicationConfiguration(classes = SpringBootApplication.class) 
//Junit模拟ServletContext需要加上WebAppConfiguration
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
//指定SpringBoot启动类
@SpringApplicationConfiguration(classes = SpringBootApplication.class) 
//Junit模拟ServletContext需要加上WebAppConfiguration
@WebAppConfiguration

我使用的是spring boot 1.3.3版本

1.4版本以后,SpringApplicationConfiguration将被SpringBootTest取而代之

### Spring Boot 单元测试教程及最佳实践 #### 了解Spring Boot 测试支持 Spring Boot 提供了丰富的测试支持,涵盖了多种常用的测试框架和工具,如 JUnit、Spring Test 和 Mockito 等。这些工具能够协助开发者高效地编写并执行不同种类的测试案例[^1]。 #### 配置构建文件以支持单元测试 为了使项目具备运行单元测试的能力,在 `build.gradle` 文件内需加入特定依赖项以及配置任务来指定采用 JUnit Platform 执行测试: ```groovy dependencies { ... testAnnotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } ``` 上述设置确保了 Lombok 的编译特性可以在测试环境中被利用到,并且指定了用于启动测试平台所需的库版本[^2]。 #### 编写简单的控制器层单元测试 创建一个新的 Java 类作为 API 控制器的功能性验证入口点。这里展示了一个基于 RESTful 设计模式的服务端点示例及其对应的单元测试方法实现方式: ```java // Controller Class Example @RestController @RequestMapping("/api/example") public class ExampleController { @GetMapping("/{id}") public ResponseEntity<String> getExample(@PathVariable String id){ return new ResponseEntity<>("Item with ID:" + id, HttpStatus.OK); } } // Unit Test For Above Controller Using MockMvc @SpringBootTest(webEnvironment = WebEnvironment.MOCK) @AutoConfigureMockMvc class ExampleControllerTest { @Autowired private MockMvc mockMvc; @Test void shouldReturnDefaultMessage() throws Exception { this.mockMvc.perform(get("/api/example/1")) .andExpect(status().isOk()) .andExpect(content().string(containsString("ID:1"))); } } ``` 这段代码展示了如何运用 `MockMvc` 对 HTTP 请求作出响应模拟操作,从而允许对 web 层逻辑进行隔离式的检验而不必真正发起网络请求[^3]。 #### 应用最佳实践建议 - **保持独立性**:每个测试应当尽可能减少对外部资源(数据库连接、远程服务调用等)的依赖程度; - **提高可读性和维护性**:遵循一致性的命名约定和技术栈标准,使得其他团队成员也容易理解所写的测试意图; - **注重性能效率**:避免不必要的初始化开销或冗余计算过程影响整体吞吐量表现;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值