16.2 测试之unitils

来源:互联网 发布:蓝色大门 知乎 编辑:程序博客网 时间:2024/04/24 00:02

需要下载jar包

几种断言范例:

package sample.unitils;import java.util.*;import org.junit.Test;import static org.unitils.reflectionassert.ReflectionAssert.*;import static org.unitils.reflectionassert.ReflectionComparatorMode.*;import com.baobaotao.domain.User;public class ReflectionAssertTest {    @Test    public void testReflectionEquals(){        User user1 = new User("tom","1234");        User user2 = new User("tom","1234");        assertReflectionEquals(user1, user2);    }    @Test    public void testArrayLenientEquals(){        Integer orderList1[] = new Integer[]{1,2,3};        Integer orderList2[] = new Integer[]{3,2,1};        //测试两个数组的值是否相等,忽略顺序        assertLenientEquals(orderList1, orderList2);        assertReflectionEquals(orderList1, orderList2,LENIENT_ORDER);        //测试两个对象的值是否相等,忽略时间值是否相等        User user1 = new User("tom","1234");        Calendar cal1 = Calendar.getInstance();        user1.setLastVisit(cal1.getTime());        User user2 = new User("tom","1234");        Calendar cal2 = Calendar.getInstance();        cal2.set(Calendar.DATE, 15);        user2.setLastVisit(cal2.getTime());        assertReflectionEquals(user1, user2,LENIENT_DATES);        assertLenientEquals(user1, user2);    }    @Test    public void testPropertyLenientEquals(){        User user = new User("tom","1234");        assertPropertyReflectionEquals("userName", "tom", user);        assertPropertyLenientEquals("lastVisit", null, user);    }}

unitils集成spring

需要 unitils-spring.jar
在src目录下有文件:baobaotao-service.xml 、baobaotao-dao.xml、jdbc.properties等。
先写一个基类加载配置文件:

--  BaseServiceTest.javapackage sample.unitils.spring;import static org.junit.Assert.assertNotNull;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.unitils.UnitilsJUnit4;import org.unitils.spring.annotation.SpringApplicationContext;// 就在src目录下@SpringApplicationContext({"baobaotao-service.xml", "baobaotao-dao.xml"})public class BaseServiceTest extends UnitilsJUnit4 {    // 加载spring上下文,是public的,所以子类可以直接用不用再声明一次。    @SpringApplicationContext    public ApplicationContext applicationContext;    @Test    public void testApplicationContext(){        assertNotNull(applicationContext);    }}

子类:

--  SimpleUserServiceTest.javapackage sample.unitils.spring;import org.junit.Test;import org.unitils.spring.annotation.SpringBean;import org.unitils.spring.annotation.SpringBeanByName;import org.unitils.spring.annotation.SpringBeanByType;import com.baobaotao.service.UserService;import static org.junit.Assert.*;public class SimpleUserServiceTest extends BaseServiceTest {    //Spring容器中加载Id为"userService"的Bean    @SpringBean("userService")    private UserService userService1;    //从Spring容器中加载与UserService相同类型的Bean    @SpringBeanByType    private UserService userService2;    //从Spring容器中加载与userService相同名称的Bean    @SpringBeanByName    private  UserService userService;    @Test    public void testApplicationContext(){        assertNotNull(applicationContext);    }    @Test    public void testUserService(){        assertNotNull(userService);        assertNotNull(userService1);        assertNotNull(userService2);        assertEquals("john123",userService.findUserByUserName("john123").getUserName());            }}

unitils的配置文件

有三个级别的配置,每个级别可以覆盖前一个配置
1. Unitils-defaults.properties:默认配置文件,在Unitils自己的发布包中。
2. Unitils.propertis:包含项目范围的配置
3. Unitils-local.properites:包含用户规范配置
第一个文件,Unitils-defaults.properties,包含默认值并且被打包在Unitils.jar.你不需要改变这个文件,不过你可以用来做参考,因为他包含了所有对Unitils的可能配置

后两个文件需要自己修改部分内容。
整个文件结构如下图:
这里写图片描述

unitils集成Hibernate

需要unitils-orm.jar
先写个父类:

-- BaseDaoTest.javapackage sample.unitils.hibernate;import static org.junit.Assert.assertNotNull;import org.hibernate.SessionFactory;import org.junit.Test;import org.unitils.UnitilsJUnit4;import org.unitils.orm.hibernate.annotation.HibernateSessionFactory;@HibernateSessionFactory("hibernate.cfg.xml")public class BaseDaoTest extends UnitilsJUnit4{    // 声明为public,子类可以直接调用    @HibernateSessionFactory    public SessionFactory sessionFactory;    @Test    public void testSessionFactory(){        assertNotNull(sessionFactory);        System.out.println(sessionFactory);    }}

子类:

-- SimpleUserDaoTest.javapackage sample.unitils.hibernate;import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;import org.unitils.orm.hibernate.HibernateUnitils;import com.baobaotao.dao.hibernate.WithoutSpringUserDaoImpl;public class SimpleUserDaoTest extends BaseDaoTest {    private WithoutSpringUserDaoImpl userDao;    // 初始化 userDao    @Before    public void init(){        userDao = new WithoutSpringUserDaoImpl();        userDao.setSessionFactory(sessionFactory);    }    //Hibernate映射测试    @Test    public void testMappingToDatabase() {        HibernateUnitils.assertMappingWithDatabaseConsistent();    }    // 测试userDao    @Test    public void testUserDao(){        assertNotNull(userDao);        assertNotNull(userDao.findUserByUserName("john123"));        assertEquals("john123", userDao.findUserByUserName("john123").getUserName());    }}
0 0
原创粉丝点击