# 19-Java与JUnit4整合
Spring Test测试模块
- Spring Test是Spring中用于测试的模块
- Spring Test对JUnit单元测试框架有良好的整合
- 通过Spring Test可在JUnit在单元测试时自动初始化IoC容器
# Spring 与 JUnit4整合过程
- Maven工程依赖spring-test
- 利用@RunWith与@ContextConfiguration描述测试用例类
- 测试用例类从容器获取对象完成测试用例的执行
@RunWith注解的含义为: 将JUnit4的运行过程交给Spring来完成,通过这个注解可以让Spring接管JUnit4的控制权,完成IOC的初始化工作;而@ContextConfiguration则用于说明在初始化IOC容器过程中,需要加载哪个配置文件
# spring与JUnit4整合示例代码
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.torey.spring.dao;
/**
* @Author http://torey611.gitee.io/li-tao-feng/
* @Email torey6061@qq.com
* @Date 2021/5/1 12:24
* @描述:
*/
public class UserDao {
public void insert(){
System.out.println(this.getClass().getName() + ".insert()");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
package com.torey.spring.server;
import com.torey.spring.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Author http://torey611.gitee.io/li-tao-feng/
* @Email torey6061@qq.com
* @Date 2021/5/1 12:24
* @描述:
*/
public class UserService {
private UserDao userDao;
public void createUser(){
System.out.println(this.getClass().getName()+ ".createUser():创建用户");
userDao.insert();
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.torey.spring.dao.UserDao"></bean>
<bean id="userServer" class="com.torey.spring.server.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
package com.torey.spring.server;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import static org.junit.Assert.*;
/**
* @Author http://torey611.gitee.io/li-tao-feng/
* @Email torey6061@qq.com
* @Date 2021/5/1 12:32
* @描述: 光标定位到某个方法,按Ctrl+Shift+t 就可以生成测试用例
*/
@RunWith(SpringJUnit4ClassRunner.class)//将JUnit4的执行权交由Spring Test,在测试用例执行前自动化初始IoC容器
//@ContextConfiguration("classpath:applicationContext.xml")//用于说明加载哪个配置文件
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})//用于说明加载哪个配置文件
public class UserServiceTest {
// @Resource
// private UserService userService;
@Autowired
private UserService userService;
@Test
public void createUser() {
userService.createUser();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32