介绍
FDP快速开发平台,为做JUnit单元测试做了些准备工作。
FDP使用Spring框架,Service层、Dao层的Bean对象都由Spring容器管理。
所以当需要对Service层、Dao层做JUnit单元测试时,要先实例化Spring 容器,准备好Spring上下文环境,才能运行Service层、Dao层的Bean对象
FDP框架提供了 SpringTransactionalContextTests 基类,可自动加载/spring-context.xml配置文件,先实例化Spring 容器,准备好Spring上下文环境。
还可以拿到DataSource dataSource数据源,用于对库直接进行操作。
如何回滚事务
单元测试执行完成后,想回滚事务,不产生垃圾数据,请在单元测试在类中加了以下注释,就可以实现
@Transactional //表示测试完成后回滚事务
SpringTransactionalContextTests基类
/** * Spring 单元测试基类 * @author Admin * @version 2013-05-15 */ @ActiveProfiles("production") @ContextConfiguration(locations = {"/spring-context.xml"}) public class SpringTransactionalContextTests extends AbstractTransactionalJUnit4SpringContextTests { protected DataSource dataSource; @Autowired public void setDataSource(DataSource dataSource) { super.setDataSource(dataSource); this.dataSource = dataSource; } }
一个JUnit单元测试的实例
package com.sicheng.admin.test; import java.util.Date; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.sicheng.admin.sys.entity.User; import com.sicheng.admin.test.entity.TestData; import com.sicheng.admin.test.service.TestDataService; import com.sicheng.common.test.SpringTransactionalContextTests; public class TestDataServiceTest extends SpringTransactionalContextTests{ @Autowired private TestDataService testDataService; @Test public void testInsertSelective(){ TestData data=new TestData(); data.setName("小王"); data.setSex(0); data.setInDate(new Date()); data.setCreateBy(new User("1")); data.setCreateDate(new Date()); data.setUpdateBy(new User("2")); data.setUpdateDate(new Date()); int a=testDataService.insertSelective(data); System.out.println(a); System.out.println(data.getId()); } @Test public void testInsert(){ TestData data=new TestData(); data.setName("小王"); data.setSex(0); data.setInDate(new Date()); data.setCreateBy(new User("1")); data.setCreateDate(new Date()); data.setUpdateBy(new User("2")); data.setUpdateDate(new Date()); int a=testDataService.insert(data); System.out.println(a); System.out.println(data.getId()); } @Test public void testSelectById(){ TestData data2=testDataService.selectById("4571"); System.out.println(data2.getId()); System.out.println(data2.toString()); } @Test public void testSelectByWhere(){ TestData data=new TestData(); data.setId("4571"); data.setName("你好"); data.setSex(2); List<TestData> list=testDataService.selectByWhere(data); for(TestData d:list){ System.out.println(d.toString()); } } @Test public void testSelectAll(){ TestData data=new TestData(); List<TestData> list=testDataService.selectAll(data); for(TestData d:list){ System.out.println(d.toString()); } } @Test public void testSelectAll2(){ List<TestData> list=testDataService.selectAll(null); for(TestData d:list){ System.out.println(d.toString()); } } @Test public void testUpdateById(){ TestData data=new TestData(); data.setId("789429529165660160"); data.setName("你好,这是修改后的名称"); data.setSex(2); data.setInDate(new Date()); data.setCreateBy(new User("1")); data.setCreateDate(new Date()); data.setUpdateBy(new User("2")); data.setUpdateDate(new Date()); int a=testDataService.updateById(data); System.out.println(a); } @Test public void testUpdateByWhere(){ TestData data=new TestData(); data.setId("789429529165660160"); data.setName("你好,这是修改后的名称"); data.setSex(2); data.setInDate(new Date()); data.setCreateBy(new User("1")); data.setCreateDate(new Date()); data.setUpdateBy(new User("2")); data.setUpdateDate(new Date()); TestData condition=new TestData(); condition.setId("789429529165660160"); condition.setSex(2); condition.setDelFlag(null);//把del_flag设为null,表示del_flag不做为条件查询,请你根据业务情况自己把握 int a=testDataService.updateByWhere(data,condition); System.out.println(a); } @Test public void testUpdateByIdSelective(){ TestData data=new TestData(); data.setId("789429529165660160"); data.setName("你好,这是修改后的名称"); data.setSex(2); data.setInDate(new Date()); data.setCreateBy(new User("1")); data.setCreateDate(new Date()); data.setUpdateBy(new User("2")); data.setUpdateDate(new Date()); int a=testDataService.updateByIdSelective(data); System.out.println(a); } @Test public void testUpdateByWhereSelective(){ TestData data=new TestData(); data.setId("789429529165660160"); data.setName("你好,这是修改后的名称,好的"); data.setSex(2); TestData condition=new TestData(); condition.setId("789429529165660160"); condition.setSex(2); condition.setDelFlag(null);//把del_flag设为null,表示del_flag不做为条件查询,请你根据业务情况自己把握 int a=testDataService.updateByWhereSelective(data,condition); System.out.println(a); } @Test public void testDeleteByWhere(){ TestData data=new TestData(); data.setId("789429529165660160"); data.setName("你好,这是修改后的名称,好的"); data.setSex(2); data.setDelFlag(null);//把del_flag设为null,表示del_flag不做为条件查询,请你根据业务情况自己把握 int a=testDataService.deleteByWhere(data); System.out.println(a); } @Test public void testDeleteById(){ int a=testDataService.deleteById("789429529165660160"); System.out.println(a); } @Test public void testCountByWhere(){ TestData data=new TestData(); // data.setId("789429529165660160"); // data.setName("你好,这是修改后的名称,好的"); data.setSex(2); data.setDelFlag(null);//把del_flag设为null,表示del_flag不做为条件查询,请你根据业务情况自己把握 int a=testDataService.countByWhere(data); System.out.println(a); } }