我们知道一个程序的入口是main方法,junit框架中就集成了一个main方法(Runner类),该方法会判断当前测试类中那些方法有@Test注解,junit就会通过Method.invoke()方法调用执行。我们在spring框架中如何集成junit呢?由于junit不知道我们使用了spring框架,所以就不会为我们读取配置文件/类创建spring核心容器,就无法通过Autowired注解为变量注入值。那么在使用spring是如何集成junit呢?
Spring中使用junit单元测试:
1.pom文件中导入Spring整合junit的jar包坐标,spring-test jar包
2.使用junit提供的一个注解@Runwith把原来的main方法成spring提供的,@RunWith(SpringJUnit4ClassRunner.class),该类继承了junit包下的Runner类
3.告知Spring运行器,ioc创建是基于xml还是注解并说明位置
@ContextConfiguration
locations:指定xml文件的位置,加上classpath关键字,表示在类路径下
classes:指定注解类所在地位置
当我们使用spring 5.x版本的时候,要求junit的jar必须是4.12及以上,示例代码如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfiguration.class)
public class AccountTest {
@Autowired
private IAccountService as = null;
@Test
public void testFindAll() {
List<Account> res = as.finAccounts();
for(Account account : res){
System.out.println(account);
}
}
}