之前写的一个项目,在做单元测试的时候,用了service来存储数据,然后就发现了一个错误:spring的注入错误,我在service类上加了component并且在spring的component-scan也配置了相应的路径,要注入的东西也都加了@Resource,在测试类里面也对service进行了注入,但是就是注入不进来,但是利用AnnotationConfiguration里的sessionFactory却又可以存储,这时我发现:junit所测试的函数仅仅局限于本身,所以spring不会帮你把service注入进来。心得:利用junit做单元测试时,用AnnotationConfiguration里的sessionFatory测试或者从ApplicationContext里获取bean进行测试都可以,另外一种麻烦的方法就是在另一个类里面调用要测试的函数,spring也会帮你注入。
方法:
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
IUserService us = (IUserService) ctx.getBean("userService");
User u = new User();
u.setName("Jack");
us.saveUser(u);或者:
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
User u = new User();
u.setName("B");
u.setAge(20);
s.save(u);
s.getTransaction().commit();
本文探讨了在使用JUnit进行单元测试时,如何处理Spring框架中bean的注入问题。通过AnnotationConfiguration的sessionFactory或者从ApplicationContext获取bean是两种可行的方法。此外,还可以在辅助类中调用待测试函数,让Spring自动完成注入。

420

被折叠的 条评论
为什么被折叠?



