springboot中的怎么用JUnit进行测试的?

在 Spring Boot 中使用 JUnit 进行单元测试非常简单,官方已帮你集成好 JUnit5(Spring Boot 2.x 默认),只需 3 步即可跑起来。下面给出一份「最小可运行」示例,并补充常见场景(Mock、Web、事务)的写法,复制即可用。

1.引入依赖(已自带,确认即可)

XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

该包已包含 JUnit5、Mockito、AssertJ、Hamcrest 等,无需额外导包

2.最简单的 service 层单元测试

java 复制代码
@SpringBootTest                      // 1. 拉起整个 Spring 容器
class UserServiceTest {

    @Autowired
    private UserService userService;   // 2. 直接注入真实 Bean

    @Test                              // 3. JUnit5 注解
    void getUserById() {
        User u = userService.getById(1L);
        assertThat(u.getName()).isEqualTo("Jack");   // AssertJ 流式断言
    }
}

运行:IDEA 在方法左侧点击 ▶ 即可,首次会自动编译并启动容器,完成后看到绿色条即通过

3.常见场景快速模板

|--------------------|----------------------------------------------------------------------|
| 场景 | 关键注解/工具 |
| ① 不启动服务器,只测 web 切片 | @WebMvcTest(YourController.class) + MockMvc |
| ② 快速 Mock 依赖 | @MockBean |
| ③ 测试持久层 | @DataJpaTest + @AutoConfigureTestDatabase(replace=ANY) |
| ④ 事务回滚 | @Transactional(默认回滚) |
| ⑤ 随机端口 HTTP 测试 | @SpringBootTest(webEnvironment = RANDOM_PORT) + TestRestTemplate |

4.JUnit4 → JUnit5 对照(老项目迁移)

| JUnit4 | JUnit5 |

|---|---|

| @RunWith(SpringRunner.class) | 不需要,或改为 @ExtendWith(SpringExtension.class) |

| @Test(org.junit.Test) | @Test(org.junit.jupiter.api.Test) |

| Assert.assertEquals | Assertions.assertEquals 或 assertThat(...).isEqualTo(...) |

5.一键生成测试类小技巧

在 IDEA 里把光标停在要测试的类名上 → Ctrl+Shift+T → Create New Test → 选择 JUnit5,IDE 会自动在 src/test/java 对应包下生成模板,再补 @SpringBootTest 即可

6.运行与查看报告

  • 命令行:mvn test

  • 报告:target/surefire-reports/index.html(Maven)

  • 覆盖率:加 jacoco-maven-plugin 后执行 mvn test jacoco:report,打开 target/site/jacoco/index.html 即可看到行/分支覆盖率

照着以上模板,10 分钟即可把 Spring Boot 项目的单元测试跑起来;后续再按需拆分层级测试(@WebMvcTest、@DataJpaTest 等)即可。祝编码愉快!

相关推荐
普通人63 天前
php+html+canvas实现树状打开的结构
开发语言·javascript·html5·1024程序员节
极小狐6 天前
MR 里测试摘要空白、覆盖率不显示?JUnit 与覆盖率配置 9 步排查
数据库·ci/cd·junit·单元测试·mr·devops·代码覆盖率
普通人66 天前
宝塔中实现按地区过滤和官网跳转伪静态
服务器·开发语言·nginx·1024程序员节
普通人66 天前
php处理百度编辑器有误html
开发语言·编辑器·html·php·1024程序员节
Best-Wishes8 天前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
贾宝玉的玉宝贾8 天前
FreeSWITCH 简单图形化界面 70 - 监听/密语的lua脚本
开发语言·junit·lua·voip·freeswitch·sip·ippbx
企业数字化笔记9 天前
多租户系统从哪里开始设计?租户身份、数据隔离、权限与套餐的整体方案
java·spring boot·后端·junit
众链网络13 天前
大客流票务系统怎么防超卖:库存并发、候补队列与幂等设计的工程取舍
junit·架构
深念Y16 天前
rime-雾凇拼音-配置记录
linux·junit·软件·拼音·kde
白山编程大哥19 天前
Lua 中使用 C 语言的用户自定义类型——userdata
c语言·junit·lua