标签:
web开发中为了确保程序的正确性,单元测试必不可少。但是不借助测试框架,测试的后,每次修改都要重启Tomcat等服务容器,很麻烦。Junit是个很不错的单元测试框架。若用JUnit4测试SSH框架的架构,尤其是Service层或Action层,若通过自动注解的方式,通常会碰到nullPointer的问题,我现在不能从原理的高度来解释,但是可以给出解决此类的方法。
1。新建一个基础类,用户加载配置文件,我将其设置为
/**
* 加载配置文件的基础类
*
* Created by li on 2015/8/29.
*/
@RunWith(SpringJUnit4ClassRunner.class)
//不能加载.properties文件,否则报错
@ContextConfiguration({"classpath:spring-config.xml"})
@Transactional
public class BaseTestConfig {
}
2. 所有的测试类均继承BaseTestConfig,我写了一个Service类的测试类:
public class UserServiceTest extends BaseTestConfig {
@Autowired
private UserService userService;
@Autowired
private User user;
@Test
public void testCreate() throws Exception {
user.setName("lixw");
user.setPassword("1234");
//Spring会自动回滚,不会写入到数据库中。经有篇博客说,Spring只是在session层写入,
// 不会持久化到数据库中,这也比较贴近测试原则
userService.create(user);
}
@Test
public void testUpdate() throws Exception {
user.setId("40283a814f7a188c014f7a188e260000");
user.setName("lixw");
user.setPassword("12345");
//也不会持久化到数据库,
userService.update(user);
}
}
可以直接通过RunAs等方式测试单个方法或者单个类的全部测试方法。我的是Maven项目,所以直接通过命令:
mvn clean test
测试。测试结果如下:
这里一篇灰常不错的博文JUnit与Spring的整合——JUnit的TestCase如何自动注入Spring容器托管的对象
标签:
原文地址:http://www.cnblogs.com/licqs/p/4770141.html