Spring集成junit
因为Junit对spring的测试非常繁琐,所以spring提供对junit的集成方案
@ContextConfiguration这个注解通常与@RunWith(SpringJUnit4ClassRunner.class)联合使用用来测试
当一个类添加了注解@Component,那么他就自动变成了一个bean,就不需要再Spring配置文件中显示的配置了。把这些bean收集起来通常有两种方式,Java的方式和XML的方式。当这些bean收集起来之后,当我们想要在某个测试类使用@Autowired注解来引入这些收集起来的bean时,只需要给这个测试类添加@ContextConfiguration注解来标注我们想要导入这个测试类的某些bean。
1. 导入Spring集成junit坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
2. 使用@Runwith替换原来的运行期
@RunWith(SpringJUnit4ClassRunner.class)
3. 使用@ContextConfiguration指定配置文件或配置类
-
(1)配置文件:
@ContextConfiguration("classpath:applicationContext.xml")//value可省略 @Autowired private UserService userService; @Test public void test1(){ userService.save(); } @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml")//value可省略 public class SpringJunitTest { @Autowired private UserService userService; @Autowired private DataSource dataSource; @Test public void test1() throws SQLException { userService.save(); System.out.println(dataSource.getConnection()); } }
-
(2)配置类:
@ContextConfiguration(classes={SpringConfiguration.class}) @RunWith(SpringJUnit4ClassRunner.class) //@ContextConfiguration("classpath:applicationContext.xml")//value可省略 @ContextConfiguration(classes={SpringConfiguration.class}) public class SpringJunitTest { @Autowired private UserService userService; @Autowired private DataSource dataSource; @Test public void test1() throws SQLException { userService.save(); System.out.println(dataSource.getConnection()); } }