风人园

弱水三千,只取一瓢,便能解渴;佛法无边,奉行一法,便能得益。
随笔 - 99, 文章 - 181, 评论 - 56, 引用 - 0
数据加载中……

dbunit使用

 

使用dbunit,可以帮助我们在测试中维护数据,也可以辅助我们的测试。

首先当然是下载dbunit, http://dbunit.sourceforge.net

我测试用的是 MYSQL 5.0 。

建立数据库:
create table test1(
id int not null auto_increment,
user_name varchar(50),
primary key(id)) engine=innodb;

保存数据的xml文件:

xml 代码
  1. <dataset>  
  2.     <test1 user_name="tom"/>                
  3.     <test1 user_name="John"/>  
  4.     <test1 user_name="Rose"/>     
  5. </dataset>  

 

首先建立一个 JunitTest 的类:

java 代码
  1. public class Test2 extends TestCase {   
  2.   
  3.     protected void setUp() throws Exception {   
  4.   
  5.          }   
  6.   
  7.     protected void tearDown() throws Exception {   
  8.   
  9.          }   
  10.      
  11. }   

 

我不喜欢继承dbunit的类,所以我们在JunitTest 的类里增加这个变量:

java 代码
  1. public class Test2 extends TestCase {   
  2.   
  3.     private IDatabaseTester databaseTester;   
  4.   
  5.     protected void setUp() throws Exception {   
  6.   
  7.          }   
  8.   
  9.     protected void tearDown() throws Exception {   
  10.   
  11.          }   
  12.      
  13. }   

 

然后,我们可以该写 setUp() 方法了,无非就是连接数据库,把数据倒入到表里。

java 代码
  1. protected void setUp() throws Exception {   
  2.        
  3.     databaseTester = new JdbcDatabaseTester("com.mysql.jdbc.Driver",   
  4.             "jdbc:mysql://127.0.0.1:3306/test""root""123");   
  5.        
  6.     IDataSet dataSet = getDataSet();   
  7.        
  8.     databaseTester.setDataSet( dataSet );   
  9.     databaseTester.onSetup();   
  10.   
  11. }   
  12.   
  13. protected IDataSet getDataSet() throws Exception   
  14.    {   
  15.        
  16.        return new FlatXmlDataSet(new FileInputStream(new File("dataset.xml")));   
  17.    }   

 

然后是 tearDown 方法

java 代码
  1. protected void tearDown() throws Exception   
  2.    {   
  3.   
  4.     databaseTester.setTearDownOperation(DatabaseOperation.DELETE_ALL);   
  5.        databaseTester.onTearDown();   
  6.    }   

 

好了,准备工作完成了,下面开始写测试方法。

java 代码
  1. public void test1() throws Exception{   
  2.        
  3.     ITable test1Table = databaseTester.getDataSet().getTable("test1");   
  4.     assertEquals(test1Table.getRowCount(), 3);   
  5.        
  6. }   

这个方法就是测试 test1 表有多少条记录

 

java 代码
  1. public void test2() throws Exception{   
  2.        
  3.     ITable test1Table = databaseTester.getConnection().createQueryTable("any_name",   
  4.             "select user_name from test1 where user_name='tom'");   
  5.        
  6.     assertTrue(test1Table.getRowCount()==1);   
  7.        
  8. }   

这个方法测试是否有 user_name='tom' 这个记录.

 

那么自动增加字段怎么办呢?
只要在 tearDown 里增加

java 代码
  1. databaseTester.setTearDownOperation(DatabaseOperation.TRUNCATE_TABLE);   

就可以了!

posted on 2007-09-16 20:41 风人园 阅读(1057) 评论(0)  编辑  收藏 所属分类: Test


只有注册用户登录后才能发表评论。


网站导航: