JUnit4注解测试SSH

时间:2022-09-13 18:22:31

JUnit,大家并不陌生,对于普通的项目测试,我们只需要继承TestCase即可,但是对于SSH我们需要考虑到SpringDI注入,这就需要用到JUnit4注解来测试SSH

 

一、为何用JUnit4

   我先来说下为什么之前的JUnit的简单继承TestCase的测试不能测试SSHWeb项目,大家都知道,我们启动Web项目时要先启动Tomcat,而在Tomcat的启动过程中会读取SSH的各个配置文件,实例化各个注入的类,所以我们的程序中直接使用注解就可以操作各个类。

 

   但是如果是单击的继承TestCase的类,就缺少了读取配置文件的过程,所以当你调用一个类方法时会出现空指针错误,因为类没有实例化。

 

二、JUnit4使用

   Junit4的特点就是使用注解,简化了我们的测试代码,测试之前,先引入spring-test.jarjunit4.4.jar

 

   首先我们可以写一个公共或万能的spring-test的基类,这样需要使用时直接继承即可


package cn.xkshow.framework.service;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import cn.xkshow.framework.dao.hibernate.UniversalDao;
import cn.xkshow.plugins.page.PageList;
import cn.xkshow.plugins.page.Page;

@Service
public class UniversalService {
private UniversalDao universalDao;

public void save(Object entity) {
this.universalDao.save(entity);
}

public void saveOrUpdate(Object entity) {
this.universalDao.saveOrUpdate(entity);
}


public void setUniversalDao(UniversalDao universalDao) {
this.universalDao = universalDao;
}

}
package cn.xkshow.framework.service;

import static org.junit.Assert.*;
import javax.annotation.Resource;

import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class UniversalServiceTest extends AbstractJUnit4SpringContextTests {
@Resource
protected UniversalService universalService;

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

}

    接下来再写一个具体的测试


package cn.xkshow.core.authorization.service;

import java.util.List;

import javax.annotation.Resource;

import org.junit.Test;

import cn.xkshow.core.authorization.po.Module;
import cn.xkshow.framework.service.UniversalServiceTest;

public class UniversalServiceTureTest extends UniversalServiceTest {
@Test
public void testSave() {
User obj = new User();
obj.setName("张三");
universalService.save();
}

}


OK!