16.2 测试之unitils

需要下载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.java

package 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.java

package 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.java

package 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.java

package 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值