- 浏览: 692857 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (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 1484嘻嘻,今天咱整点东西,如题 主页面和JS操作,已经在 ... -
How to install two tomcat in one computer
2013-10-28 11:31 1533Today,I get a problem,show in ... -
Jackson 双引号的问题
2013-08-28 15:57 3747当用执行下面的代码的时候 String json ... -
flex
2013-06-30 19:21 0<?xml version="1.0&qu ... -
iBatis简单实践
2013-06-18 10:29 1471今天我实践了下ibatis框架,感觉也不错,很简单。嘻嘻,大 ... -
Spring的长篇大论
2013-02-07 09:06 0很长时间了,时间过的真快啊,一晃3年过去了。3年我变了很多 ... -
JQuery的Flexigrid的API使用
2013-01-16 14:21 13486JQuery Flexigrid 是一个不错的table插 ... -
bacup
2013-01-16 06:06 0我备份了,怎么没有反应啊 http://www.micr ... -
Spring MVC and AJAX with JSON
2013-01-05 14:17 28411. maven 配置 <!-- Spr ... -
JQuery ajax use json communicate with server
2013-01-05 14:12 1236好久没写文章了,我也心痒痒的,嘿嘿。现在写一篇文章。 ... -
SpringMVC wizard简单示例
2012-12-28 17:02 0public class UserController ... -
get access time from tomcat log
2012-12-25 10:14 1127下面给出我得到tomcat的Access Time的方法 ... -
JSF简单实践
2012-11-21 12:03 956希望多了,破灭的机会就会更多,所以简简单单的希望,然后实现它, ... -
Extjs Template两个小例子
2012-11-15 09:40 1491今天用Extjs Template做了两个小例子嘿 代 ... -
Tomcat Romete Debug
2012-12-25 10:14 989是我弟兄告诉我的。备忘录一下。 1,在Tom ... -
YUI
2012-10-29 15:05 0http://yuilibrary.com/forum/vie ... -
CSS3
2012-10-11 15:46 0<!DOCTYPE HTML> <html ...
相关推荐
DBUnit 是一个 Java 开发者常用的数据库测试工具,它与JUnit等测试框架配合,能够帮助开发者在测试...通过以上实践,我们可以高效地利用DBUnit与Ant集成,实现数据库的自动化测试和管理,提升项目的测试效率和质量。
为了更好地学习和实践这些概念,文档"单元测试JUnit4和DbUnit.doc"可能包含了详细的步骤和示例代码,而"dbunitAndJunit4"和"junit4"这两个文件夹可能包含了相关的练习项目或者源码,通过阅读和运行这些代码,可以...
五、Dbunit测试实践 在mybatis DAO层中,可以使用dbunit来进行单元测试。首先,需要在pom.xml文件中添加相关的依赖项,然后创建一个unitils.properties配置文件,用于配置自定义拓展模块,数据加载等相关信息。接着...
本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...
1. **SLF4J**:SLF4J的设计目标是为各种日志API提供一个简单统一的接口,这样应用程序就可以在不修改代码的情况下更换日志框架。它提供了API,而具体的实现则需要开发者根据项目需求选择,如Logback、Log4j等。SLF4J...
然而,实践中,将测试单位保持为函数可能会更便于管理和执行。建议为每个类创建对应的测试类,为每个函数(简单函数除外)编写测试函数。测试不应仅仅局限于公共接口,而是要涵盖所有可能出错的地方,包括私有函数。...
使用JUnit和Mockito进行单元测试,通过Spring Test和DBUnit进行集成测试,确保代码的质量和稳定性。 六、代码质量管理与重构 SpringSide 4 遵循良好的编码规范,如SOLID原则,以及代码重构的最佳实践。通过学习...
例如,清单1展示了使用JUnit进行的简单单元测试,它测试了 BeerDaoStub 类,这个类在实际环境中可能并不直接连接到数据库,这样可以避免测试时的高昂成本。清单2演示了如何通过Ant脚本运行这些单元测试,并确保构建...
而DbUnit则是一个专门针对数据库的单元测试工具,它可以协助设置和清理数据库状态,确保每次测试都在相同的初始条件下运行。 总之,JUnit作为Java开发中的核心工具,提供了强大的单元测试能力,帮助开发者确保代码...
通过Hibernate,开发者可以使用面向对象的方式来处理数据,而无需直接编写SQL语句,这使得数据库操作变得更加简单、高效。 ### 快速学习Hibernate 本书《Manning_Hibernate.Quickly》旨在帮助读者快速入门并掌握...
它提供了注解、断言和测试运行器等基础设施,使得编写和执行测试变得简单。开发者可以创建一系列的测试用例,每个用例对应于一个特定的功能点,以确保代码的正确性。例如,我们可以使用`@Test`注解标记测试方法,并...
Mybatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 3. **集成原理**:Spring Mybatis 集成主要通过 Spring 的 ...