抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文介绍了Spring的测试方法。

环境

Windows 10 企业版 LTSC 21H2
Java 1.8
Maven 3.6.3
Spring 5.3.23
JUnit 5

1 简单使用

添加依赖:

pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!-- Spring Context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
<!-- Spring Test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.23</version>
<scope>test</scope>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>

创建实体类:

java
1
2
3
4
5
6
7
8
@Component
public class User {
@Value("1")
private Integer id;
@Value("张三")
private String name;
// ...
}

创建配置类:

java
1
2
3
4
@Configuration
@ComponentScan("com.example")
public class DemoConfig {
}

创建测试类:

java
1
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 user = context.getBean(User.class);
// 使用User对象
System.out.println(user);
}
}

2 常用注解

2.1 @ExtendWith

使用@ExtendWith注解可以注册指定的扩展类,扩展类可以在测试执行的不同阶段插入自定义行为,从而增强测试的功能。

在Spring中测试使用SpringExtension扩展类,执行依赖注入,处理事务管理。

通常与@ContextConfiguration注解一起使用:

java
1
2
3
4
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = DemoConfig.class)
public class DemoTest {
}

2.2 @ContextConfiguration

使用@ContextConfiguration注解可以指定测试使用的配置类和配置文件。

指定配置类:

java
1
2
3
4
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = DemoConfig.class)
public class DemoTest {
}

指定配置文件:

java
1
2
3
4
@ExtendWith(SpringExtension.class)
@ContextConfiguration(locations = "classpath:spring.xml")
public class DemoTest {
}

2.3 @SpringJUnitConfig

使用@SpringJUnitConfig注解属于组合注解,可以代替@ExtendWith注解和@ContextConfiguration注解。

指定配置类:

java
1
2
3
@SpringJUnitConfig(classes = DemoConfig.class)
public class DemoTest {
}

指定配置文件:

java
1
2
3
@SpringJUnitConfig(locations = "classpath:spring.xml")
public class DemoTest {
}

2.4 @Test

使用@Test注解可以标记测试方法。

指定配置类,使用测试方法:

java
1
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 user = context.getBean(User.class);
// 使用User对象
System.out.println(user);
}
}

指定配置文件,使用测试方法:

java
1
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 user = context.getBean(User.class);
// 使用User对象
System.out.println(user);
}
}

2.5 @ActiveProfiles

使用@ActiveProfiles注解可以指定测试使用的隔离环境。

指定配置类,指定隔离环境:

java
1
2
3
4
@SpringJUnitConfig(classes = DemoConfig.class)
@ActiveProfiles("dev")
public class DemoTest {
}

指定配置文件,指定隔离环境:

java
1
2
3
4
@SpringJUnitConfig(locations = "classpath:spring.xml")
@ActiveProfiles("dev")
public class DemoTest {
}

评论