- 浏览: 682080 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (270)
- Ant Tool Script (12)
- XMLDigest (5)
- MyEclipse8.6 (1)
- RedHat (5)
- SVNVersionController (4)
- BatOperation (6)
- JspAndFaceWeb (66)
- javaSwing (18)
- PHP (12)
- J2SE (6)
- TestToolAndTestManual (12)
- C# (34)
- Java PatternDesign (20)
- Axis2AndWebService (5)
- ITLive (2)
- DBAndControl (10)
- C/C++ (8)
- Andriod (7)
- Python (7)
- JavaWork (16)
- Android-QA (1)
- Apache-Wicket (1)
- POI (1)
- JQuery (2)
- Struts2 (1)
- Flex&Flash (6)
- sdsdsd (0)
- 1212 (0)
最新评论
-
anayomin:
对九楼继续改进
public static <T> ...
Java List 分页 -
H4X0R:
来学习学习,赞一个
Aqua Data Studio 导出SQL -
yankai0219:
现在出现这个错误 Fatal error: Class 'PH ...
纯PHP搭建Apache+Eclipse+xDebug+PHPUnit+MakeGood -
yankai0219:
您好,我在搭建环境中提示PHPUnit_Framework_T ...
纯PHP搭建Apache+Eclipse+xDebug+PHPUnit+MakeGood -
wilsonchen:
chenhailong 写道wilsonchen 写道chen ...
C# RSA和Java RSA互通
我不知道什么是失败,我也不知道失败后会是怎么样的天和地,但已经做过了,就不要放弃,做过了,就应该努力
我文章的前头我想说,这篇文章的偷学的。参考:http://kxrs.iteye.com/blog/248831
个人因为作者还是比较明白的,但文章的排版实在不敢恭维。好像还是。。。不管了,自己会就行嘿嘿
下面我把原作者的东西在创造了一下:
第一:DBUnit需要的jar包
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.4.9</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
也可以直接下载:
DBUnit http://sourceforge.net/projects/dbunit/files/
SLF4j http://www.slf4j.org/
第二:创建应用工具
package com.test.dbunit; import java.io.FileOutputStream; import java.sql.Connection; import java.sql.DriverManager; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.database.QueryDataSet; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.xml.FlatDtdDataSet; import org.dbunit.dataset.xml.FlatXmlDataSet; public class Test { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost/dbunit","root","admin"); //使用DBunit的DatabaseConnection类封装jdbc的连接,它实现了接口IDatabaseConnection IDatabaseConnection connection =new DatabaseConnection(conn); //QueryDataSet和.net中的数据集的概念类似,它是数据库的一个映像 QueryDataSet partial=new QueryDataSet(connection); //把task表中的数据导出到xml文件中 partial.addTable("task"); //partial.addTable("users","select * from users where id= 1 "); partial.addTable("users"); //把数据内容导出到xml文件中 FlatXmlDataSet.write(partial,new FileOutputStream("partial.xml")); //将数据库中所有的数据导出 IDataSet full =connection.createDataSet(); FlatXmlDataSet.write(full, new FileOutputStream("full.xml")); //导出Dtd文件 FlatDtdDataSet.write(full, new FileOutputStream("full.dtd")); } }
------------------------------------------------------------------------------------------------------------ <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE dataset SYSTEM "full.dtd"> <dataset> <task/> <users id="1" username="张三" password="123"/> <users id="2" username="李四" password="456"/> <users id="3" username="王五" password="789"/> </dataset> ------------------------------------------------------------------------------------------------------------ <!ELEMENT dataset ( task*, users*)> <!ELEMENT task EMPTY> <!ATTLIST task id CDATA #IMPLIED name CDATA #IMPLIED description CDATA #IMPLIED > <!ELEMENT users EMPTY> <!ATTLIST users id CDATA #REQUIRED username CDATA #REQUIRED password CDATA #REQUIRED > ------------------------------------------------------------------------------------------------------------------
测试实例:
package com.java; import java.io.FileInputStream; import java.io.FileOutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import org.dbunit.DBTestCase; import org.dbunit.PropertiesBasedJdbcDatabaseTester; import org.dbunit.database.DatabaseConfig; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.xml.FlatDtdDataSet; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.operation.DatabaseOperation; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class DaoTest extends DBTestCase { protected DatabaseOperation getSetUpOperation() throws Exception { return DatabaseOperation.CLEAN_INSERT; } protected DatabaseOperation getTearDownOperation() throws Exception { return DatabaseOperation.DELETE_ALL; } protected void setUpDatabaseConfig(DatabaseConfig config) { config.setProperty(DatabaseConfig.PROPERTY_BATCH_SIZE, new Integer(97)); config.setFeature(DatabaseConfig.FEATURE_BATCHED_STATEMENTS, true); } public DaoTest() { System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "com.mysql.jdbc.Driver "); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:mysql://localhost:3306/test"); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "root"); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, "24226305"); // System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, "" ); } protected IDataSet getDataSet() throws Exception { return new FlatXmlDataSetBuilder().build(new FileInputStream("dataset.xml")); } @Test public void DBtest() throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "24226305"); IDatabaseConnection connection = new DatabaseConnection(conn); FlatDtdDataSet.write(connection.createDataSet(), new FileOutputStream("my-dataset.dtd")); //DatabaseOperation.INSERT.execute(connection, getDataSet()); Statement state = conn.createStatement(); ResultSet rs = state.executeQuery("select * from User"); while (rs.next()) { System.out.println(rs.getString("userName")); } } }
package com.test.dbunit; import java.io.File; import java.io.FileInputStream; import org.dbunit.Assertion; import org.dbunit.DBTestCase; import org.dbunit.PropertiesBasedJdbcDatabaseTester; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.SortedTable; import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.operation.DatabaseOperation; public class SampleTest extends DBTestCase{ //重写构造方法 public SampleTest(String name){ super(name); //在系统属性中添加数据库练接用到的属性 System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "com.mysql.jdbc.Driver"); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:mysql://localhost/dbunit"); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "root"); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, "admin"); } /** * 在每次测试执行之前都先执行getSetUpOperation()操作 */ public DatabaseOperation getSetUpOperation() throws Exception{ //默认在setUPOperation中就是执行CLEAN_INSERT , //CLEAN_INSERT是DELETE_ALL和INSERT的组合,数据库会恢复到xml文件中的数据。 return DatabaseOperation.CLEAN_INSERT; //刷新会更新xml内容到数据库中,数据存,xml中都存在的updata,数据库不存在insert, //数据库中有xml中没有的保持不变 //return DatabaseOperation.REFRESH; } /** * 每次测试执行之后会执行该操作。 */ public DatabaseOperation getTearDownOperation() throws Exception{ //什么都不做--默认 //return DatabaseOperation.NONE; //清空数据库 return DatabaseOperation.DELETE_ALL; } /** * 将数据文件转换成数据集,这个方法是在dbunit启动的时候自动启动 */ @Override protected IDataSet getDataSet() throws Exception { return new FlatXmlDataSet(new FileInputStream("full.xml")); } public void test1() throws Exception{ IDataSet dataSet = getConnection().createDataSet(); //数据库中实际的表 ITable actualTable = dataSet.getTable("users"); //期望值 IDataSet dataSet2 = new FlatXmlDataSet(new File("full.xml")); ITable expectedTable = dataSet2.getTable("users"); //DBUnit的Assertion类 Assertion.assertEquals(expectedTable,actualTable); } //比较过滤二种方法之一,包含哪些列 public void test2() throws Exception{ IDataSet dataSet = getConnection().createDataSet(); ITable actualTable = dataSet.getTable("users"); //期望值-没有id列 IDataSet dataSet2 = new FlatXmlDataSet(new File("Full2.xml")); ITable expectedTable = dataSet2.getTable("users"); //用过滤器过滤掉actualtable的中的id列 actualTable = DefaultColumnFilter.includedColumnsTable(actualTable, expectedTable.getTableMetaData().getColumns()); Assertion.assertEquals(expectedTable, actualTable); } //方法2,比较用户名相同的。排除掉不需要比较的各个字段, public void test3() throws Exception{ IDataSet dataSet =getConnection().createDataSet(); ITable actualTable = dataSet.getTable("users"); IDataSet dataSet2 = new FlatXmlDataSet(new File("full2.xml")); ITable expectedTable = dataSet2.getTable("users"); ITable filterActualTable =DefaultColumnFilter.excludedColumnsTable( actualTable, new String[]{"id","password"}); ITable filterExpectedTable =DefaultColumnFilter.excludedColumnsTable( expectedTable,new String[]{"password"}); Assertion.assertEquals(filterExpectedTable,filterActualTable); } //排序表格 public void test4() throws Exception{ IDataSet dataSet = getConnection().createDataSet(); //数据库中实际的表 ITable actualTable = dataSet.getTable("users"); //期望值 IDataSet dataSet2 = new FlatXmlDataSet(new File("expected.xml")); ITable expectedTable = dataSet2.getTable("users"); //把表按照字段排序,默认是按照字符串排序 SortedTable sortedTable1 = new SortedTable(actualTable,new String[]{"id"}); //按照数据库中字段排序 sortedTable1.setUseComparable(true); SortedTable sortedTable2 = new SortedTable(expectedTable,new String[]{"id"}); //按照数据库中字段排序 sortedTable2.setUseComparable(true); //DBUnit的Assertion类 Assertion.assertEquals(sortedTable2,sortedTable1); } // 表操作测试的实例: public void testSave() throws Exception{ UsersDB db =new UsersDB(); Users users =new Users(); users.setId(9); users.setUserName("langsin"); users.setPassword("helloworld"); db.save(users); IDataSet dataSet = getConnection().createDataSet(); ITable actualTable = dataSet.getTable("users"); IDataSet dataSet2 = new FlatXmlDataSet(new File("expected2.xml")); ITable expectedTable =dataSet.getTable("users"); Assertion.assertEquals(expectedTable, actualTable); }
至于原作者在后面写的注意,我个人感觉有写不妥的地方
1. 我感觉创建数据的时候应该在@BeforeClass里面做
2.删除数据的时候应该在@AfterClass里面做
还有就是DBUnit我个人感觉非常想框架,而且比什么Dao好的非常多,但比不上Hibernate什么的持久层框架那么好。所以可以堪称为小Dao
希望我的拙见,能让大伙学到东西
发表评论
-
2817955743
2014-11-01 19:47 02817955743 123456789 htt ... -
JQuery的替代品Zeptojs
2014-07-30 10:24 0Zepto的小巧已经不是JQuery的可以媲美的,Zepto ... -
121212
2014-01-30 11:04 0http://metroui.org.ua/example ... -
JS 操作Cookie,记录帐号信息
2013-11-25 16:49 1443嘻嘻,今天咱整点东西,如题 主页面和JS操作,已经在 ... -
How to install two tomcat in one computer
2013-10-28 11:31 1492Today,I get a problem,show in ... -
Jackson 双引号的问题
2013-08-28 15:57 3680当用执行下面的代码的时候 String json ... -
flex
2013-06-30 19:21 0<?xml version="1.0&qu ... -
iBatis简单实践
2013-06-18 10:29 1434今天我实践了下ibatis框架,感觉也不错,很简单。嘻嘻,大 ... -
Spring的长篇大论
2013-02-07 09:06 0很长时间了,时间过的真快啊,一晃3年过去了。3年我变了很多 ... -
JQuery的Flexigrid的API使用
2013-01-16 14:21 13441JQuery Flexigrid 是一个不错的table插 ... -
bacup
2013-01-16 06:06 0我备份了,怎么没有反应啊 http://www.micr ... -
Spring MVC and AJAX with JSON
2013-01-05 14:17 28001. maven 配置 <!-- Spr ... -
JQuery ajax use json communicate with server
2013-01-05 14:12 1210好久没写文章了,我也心痒痒的,嘿嘿。现在写一篇文章。 ... -
SpringMVC wizard简单示例
2012-12-28 17:02 0public class UserController ... -
get access time from tomcat log
2012-12-25 10:14 1074下面给出我得到tomcat的Access Time的方法 ... -
JSF简单实践
2012-11-21 12:03 929希望多了,破灭的机会就会更多,所以简简单单的希望,然后实现它, ... -
Extjs Template两个小例子
2012-11-15 09:40 1457今天用Extjs Template做了两个小例子嘿 代 ... -
Tomcat Romete Debug
2012-12-25 10:14 935是我弟兄告诉我的。备忘录一下。 1,在Tom ... -
YUI
2012-10-29 15:05 0http://yuilibrary.com/forum/vie ... -
CSS3
2012-10-11 15:46 0<!DOCTYPE HTML> <html ...
相关推荐
NULL 博文链接:https://coderdream.iteye.com/blog/2142973
NULL 博文链接:https://coderdream.iteye.com/blog/2142704
NULL 博文链接:https://coderdream.iteye.com/blog/2142583
DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类...
最新的最全的dbunit jar包以及入门教程
dbunit-2.4.9 源码 http://www.dbunit.org/apidocs/index.html 代码 API
DBUNIT使用的详细文档
dbunit的jar包,版本2.2
dbunit入门实例 dbunit入门实例 dbunit入门实例 dbunit入门实例
Junit,dbunit单元测试jar包
dbunit开发文档,供需要用dbunit进行开发的人使用
dbunit2.2完全包 数据库单元测试
Dbunit 基本原理就是在跑测试用例运行之前对数据表做用户定义的操作,清空不想要的数据,插入用户自定义的数据,使得该数据表处于用户知道的一种状态。而用户自定义的数据使用项目里的一个 xml 文件来表示。 Xml ...
dbunit-2.2.3..jar dbunit-2.4.2.jar dbunit-2.5.3.jar dbunit-2.7.0.jar 发现每个版本对JDK是有要求的,比如2.7 只能用于JDK1.8版本,所以整理好几个jar包挑选适合自己的
文档是关于DBUnit的ant的使用文档,通俗易懂
一个很好的DBUnit的例子 博文链接:https://virgoooos.iteye.com/blog/186859
直接从http://www.dbunit.org/apidocs/index.html上下载的HTML文件的压缩包。 因为没有做成CHM,所以只要1分就行~
dbunit使用必需Jar包,总共4个必需Jar包
dbunit-2.4.2.jar dbunit 必要的一个jar
dbunit是一个基于junit扩展的数据库测试框架。 更多资源详见: http://blog.csdn.net/fanxiaobin577328725/article/details/51894331 (包含图书各部分和随书源码,还有其它资源的详细下载地址)