日期:2014-05-16  浏览次数:20472 次

Unitils 使用指南[翻译]-数据库测试

?

1.1.1?????? 数据库测试

数据库层的单元测试对构建企业应用来说是比较有价值的,但是由于过于复杂我们不得不放弃他。Unitils降低了数据库测试的复杂度,让数据库测试简单而又容易维护,下面的章节描述DatabaseModule?andDbUnitModule?怎么对你的数据库测试提供支持。

1.1.1.1???? 使用Dbunit维护测试数据

数据库测试应该使用单元测试数据库,这样你可以完全的精细的控制你使用到的测试数据。DbUnitModule?是基于DBunit构建的,可以提供对测试数据集的支持。

1.1.1.1.1??? 装载测试数据集

让我们看一个例子,UserDao有一个简单的方法findByName,用来通过用户的first last name来取回用户,常用的单元测试如下:

@DataSet
public class UserDAOTest extends UnitilsJUnit4 {
 
    @Test
    public void testFindByName() {
        User result = userDao.findByName("doe", "john");
        assertPropertyLenientEquals("userName", "jdoe", result);
    }
 
    @Test
    public void testFindByMinimalAge() {
        List<User> result = userDao.findByMinimalAge(18);        
        assertPropertyLenientEquals("firstName", Arrays.asList("jack"), result);
    }
}
?

@DataSet注解是通知Unitils查找测试需要加载的Dbunit数据文件。如果没有指定文件名,Unitils会在当前文件夹自动查找和测试类文件名相同的数据集文件如:className.xml.

数据集文件应该使用Dbunit?FlatXMLDataSet?格式,并且应该包含所有测测试数据。所有表的内容首先被清空,然后所有的测试数据被插入。不在数据文件中的表,是不会被清空内容的。你如果需要清空特定的表你可以在文件中加入一个表的空标签,如:<MY_TABLE />,对于插入null值,你也可以使用类似的方法。

UserDaoTest你需要建立一个数据集文件名称为:UserDaoTest.xml 并且把它放到UserDaoTest 类文件所在的目录。

<?xml version='1.0' encoding='UTF-8'?>
<dataset>
 
    <usergroup name="admin" />