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容器托管的对象
时间: 2024-11-21 03:09:01