Spring整合JUnit
Spring整合JUnit
JUnit的概述
JUnit是一个Java语言的单元测试框架。它广泛用于Java开发者编写和执行自动化的单元测试,以确保代码的质量和正确性。
JUnit的核心概念
- 测试用例(Test Case)
一个测试用例是一个完整的测试单元,它检查特定条件或行为。在JUnit中,测试用例通常是一个方法,使用注解@Test标记。
- 测试套件(Test Suite)
测试套件是一组测试用例或其他的测试套件的集合。在JUnit中,可以使用@Runwith和@Suite.SuiteClasses注解来定义测试套件。
- 断言(Assertion)
断言用于验证期望值与实际值是否相等。JUnit提供了一系列的断言方法,如assertEquals()、assertTrue()等。
- 注解(Annoation)
JUnit使用注解来标记测试方法、测试套件、测试前的设置和测试后的清理等。常见的注解如@Test、@Before、@After、@BeforeClass、@AfterClass等。
JUnit的常用注解
注解 | 说明 |
---|---|
@Test | 标记一个方法为测试方法 |
@Before | 标记一个方法,它会在每个测试方法执行之前执行 |
@After | 标记一个方法,它会在每个测试方法执行之后执行 |
@BeforeClass | 标记一个静态方法,它会在所有测试方法执行之前执行一次 |
@AfterClass | 标记一个静态方法,他会在所有测试方法执行之后执行一次 |
@Ignore | 标记一个测试方法或测试类被忽略,不会执行 |
JUnit的基本使用
- 添加JUnit的依赖
- 编写测试类
- 执行测试
JUnit的版本履历
- JUnit3(1998年发布):基础版本,简单但耦合度高
- JUnit4(2006年发布):引入注解,简化测试代码,广泛使用但缺乏现代Java特性支持。
- JUnit5(2017年发布):现代化版本,支持新特性,模块化和可扩展性更好,兼容旧版本。
Spring整合JUnit5
引入相关依赖
<dependencies>
<!--spring context依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.11</version>
</dependency>
<!--spring对junit的支持相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>6.0.11</version>
</dependency>
<!--junit5测试-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.0</version>
</dependency>
</dependencies>
添加配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 开启组件扫描-->
<context:component-scan base-package="com.shen.junit"></context:component-scan>
</beans>
一个注册到容器的实体类
/**
* 用户实体类
*/
@Component
public class User {
public void printHello() {
System.out.println("hello");
}
}
测试类
由于与Spring集成,测试类的user属性可以依赖注入
//另一种方式
//@ExtendWith(SpringExtension.class)
//@ContextConfiguration("classpath:bean.xml")
//第一种方式推荐
@SpringJUnitConfig(locations = "classpath:bean.xml")
public class SpringTestJunit5 {
private final User user;
@Autowired
public SpringTestJunit5(User user) {
this.user = user;
}
@Test
public void testUser() {
user.printHello();
}
}
Spring整合JUnit4
由于实体类、配置文件与整合JUnit5一致,这里只展示引入依赖和测试类
引入相关依赖
<dependencies>
<!--spring context依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.11</version>
</dependency>
<!--spring对junit的支持相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>6.0.11</version>
</dependency>
<!-- junit4测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:bean.xml")
public class SpringTestJunit4 {
@Autowired
private User user;
@Test
public void testUser() {
user.printHello();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具