DbUnit测试二 准备DbUnit测试环境

本文翻译自《JUnit in Action 2nd Edition》第十六章, 原书见[url=http://lyb520320.iteye.com/blog/774408]《DbUnit测试一 数据库测试挑战》[/url]附件。

[size=large]二、DbUnit[/size]
DbUnit(http://www.dbunit.org) 是一个Junit的扩展,由Manuel LaFlamme于2002年创建,在Java测试还处于幼年的时候,没有什么框架关注数据库测试。在那个时候Richard Dalalaway写了一篇博文《数据库代码单元测试》,这就是DbUnit创作灵感来源。
从那时候开始,DbUnit变成了数据库测试的JAVA框架,它的开发也有所起伏。在一个高峰期之后(基本代码库已经创建好了),它面临了一段长时间的低落。幸运的是,很多新的开发者加入了,在这期间,这本书也写好了,几个新的版本已经发布,提供了很多改进,也修正了一些bug。
DbUnit有数百个类和接口。即使如此多类,DbUnit的使用大概就是从数据库获取数据和添加数据,这些数据使用dataset表示(更特别一点,它就是实现了dataset接口的类)。
下一节将看下dataset的基本使用和DbUnit其他的特性。

[b]2.1 简单的应用程序[/b]
这一节主要是讲使用DbUnit测试JAVA应用程序的持久化层。为了方便,这层仅仅定义了一个接口,如下[Listing 1]所示:
[Listing 1]: DAO interface used in the examples 
public interface UserDao {
long addUser(User user) throws SQLException;
User getUserById(long id) throws SQLException;
}
这个DAO接口(使用简单的JDBC)的实现没有写在这里,但是可以去本书的网站下载。User对象是一个简单的POJO, 如下[Listing 2]所示:
[Listing 2]: Domain model used in the examples 
public class User {
private long id;
private String username;
private String firstName;
private String lastName;
// getters and setters omitted
}

User对象在数据库中对应users表,创建表的语句如下[Listing 3]所示:
[Listing 3]: SQL script that creates the users table 
CREATE TABLE users (id INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH
1), username VARCHAR(10), first_name VARCHAR(10), last_name VARCHAR(10) )
最后一点,本例讲使用HSQLDB数据库,因为它是基于JAVA的,不需要更多的配置。HSQLDB是非常灵活的,它可以作为客户端、嵌入式运行,使用硬盘或者内存。最简单最快的方式是使用内存嵌入式数据库,这也是本例所使用这种模式。

[b]2.2 创建DbUnit运行这个简单的程序[/b]
DbUnit本身仅有一个jar,唯一需要的外部依赖就是logging框架-SLF4J(Sample Logging Facade for Java). SLF4J需要2个jar: slf4j-api.jar(它包含slf4j框架的接口)和slf4j-nop.jar(它不记录任何东西;更多的内容将在以后讨论)。DbUnit要去连接数据库,当然要添加JDBC驱动到classpath(在本例中它就是hsqldb.jar).
这个简单的程序可以使用两种“风格”,Maven 和 Ant.使用 Maven 运行的命令是 "maven clean test". 类似地,使用Ant运行的命令是"Ant clean test". 这个程序用两种Eclipse project的方式:一种使用必要的库,另外一种使用DbUnit工程本身。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值