使用全注解配置时进行单元测试的两种方案

1.进行Junit:

直接在ContextConfiguration注解里加上配置类

@ContextConfiguration(classes= {SpringJDBC.class}),然后写测试方法,上面添加@Test就可以用测试运行方式运行

@RunWith(value=SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={SpringJDBC.class})
public class TestRun
{
	@Autowired
	private TestMapper mapper;
	@Test
	public void testRunMapper()
	{
		for(SysUser sysUser:mapper.getAllUsers())
				System.out.println(sysUser);
	}
}

2.定义AnnotationConfigApplicationContext

public class TestRun
{
	public static void main(String[] args)
	{
		// 初始Spring框架的配置上下文,使用的是AnnotationConfigApplicationContext,支持注解的配置加载
		AnnotationConfigApplicationContext ctx=null;
		try
		{
			// 加载配置类,和ClassPathXmlApplicationContext("XXXXXXXXXX.xml")是一样的原理
			ctx=new AnnotationConfigApplicationContext(SpringJDBC.class);
			// 获取一个已经通过配置注册到spirng里的bean,推荐使用class映射;
			TestMapper mapper=ctx.getBean(TestMapper.class);
			// 正常执行这个bean所生成的类
			for(SysUser sysUser:mapper.getAllUsers())
				System.out.println(sysUser);
		}
		catch(Exception e)
		{
			// 捕获异常,一般是配置异常
			// 因为用的是class映射,所以不会出现类找不到的错误,若出现,应该是配置里为设置这个类的扫描或者加载,所以也归为配置异常
			e.printStackTrace();
		}
		finally
		{
			// 在完成测试之后要关闭清空整个测试类及spring内的配置和bean,因为注解式配置是不会自动关闭,所以需要手动关闭;
			// 若问题出现在加载配置类阶段,则一般不会创建出spring上下文实例,直接就销毁了
			// 所以当问题发生在之后的阶段,发生异常会被异常捕获,然后也会在这里关闭
			if(ctx!=null)
				ctx.close();
		}
	}
}

两种方法都可以在无配置文件的纯注解环境下进行单元测试,个人喜欢第二种,因为可以直观的在代码里跟踪spring的运行状态,而且可以添加一些自己的配置和设置

你可能感兴趣的:(Spring研究)