摘要:本文介绍了Spring的测试方法。
环境
Windows 10 企业版 LTSC 21H2
Java 1.8
Maven 3.6.3
Spring 5.3.23
JUnit 5
1 简单使用
添加依赖:
pom.xml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.23</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.23</version> <scope>test</scope> </dependency>
<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.8.2</version> <scope>test</scope> </dependency>
|
创建实体类:
java1 2 3 4 5 6 7 8
| @Component public class User { @Value("1") private Integer id; @Value("张三") private String name; }
|
创建配置类:
java1 2 3 4
| @Configuration @ComponentScan("com.example") public class DemoConfig { }
|
创建测试类:
java1 2 3 4 5 6 7 8 9 10 11 12 13
| @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = DemoConfig.class) public class DemoTest { @Resource private ApplicationContext context; @Test public void test() { User user = context.getBean(User.class); System.out.println(user); } }
|
2 常用注解
2.1 @ExtendWith
使用@ExtendWith注解可以注册指定的扩展类,扩展类可以在测试执行的不同阶段插入自定义行为,从而增强测试的功能。
在Spring中测试使用SpringExtension扩展类,执行依赖注入,处理事务管理。
通常与@ContextConfiguration注解一起使用:
java1 2 3 4
| @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = DemoConfig.class) public class DemoTest { }
|
2.2 @ContextConfiguration
使用@ContextConfiguration注解可以指定测试使用的配置类和配置文件。
指定配置类:
java1 2 3 4
| @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = DemoConfig.class) public class DemoTest { }
|
指定配置文件:
java1 2 3 4
| @ExtendWith(SpringExtension.class) @ContextConfiguration(locations = "classpath:spring.xml") public class DemoTest { }
|
2.3 @SpringJUnitConfig
使用@SpringJUnitConfig注解属于组合注解,可以代替@ExtendWith注解和@ContextConfiguration注解。
指定配置类:
java1 2 3
| @SpringJUnitConfig(classes = DemoConfig.class) public class DemoTest { }
|
指定配置文件:
java1 2 3
| @SpringJUnitConfig(locations = "classpath:spring.xml") public class DemoTest { }
|
2.4 @Test
使用@Test注解可以标记测试方法。
指定配置类,使用测试方法:
java1 2 3 4 5 6 7 8 9 10 11 12
| @SpringJUnitConfig(classes = DemoConfig.class) public class DemoTest { @Resource private ApplicationContext context; @Test public void test() { User user = context.getBean(User.class); System.out.println(user); } }
|
指定配置文件,使用测试方法:
java1 2 3 4 5 6 7 8 9 10 11 12
| @SpringJUnitConfig(locations = "classpath:spring.xml") public class DemoTest { @Resource private ApplicationContext context; @Test public void test() { User user = context.getBean(User.class); System.out.println(user); } }
|
2.5 @ActiveProfiles
使用@ActiveProfiles注解可以指定测试使用的隔离环境。
指定配置类,指定隔离环境:
java1 2 3 4
| @SpringJUnitConfig(classes = DemoConfig.class) @ActiveProfiles("dev") public class DemoTest { }
|
指定配置文件,指定隔离环境:
java1 2 3 4
| @SpringJUnitConfig(locations = "classpath:spring.xml") @ActiveProfiles("dev") public class DemoTest { }
|
条