`
baorui945
  • 浏览: 7610 次
社区版块
存档分类
最新评论

DBUnit实例 SC测试总结(二)--数据库测试DBunitDemo

    博客分类:
  • tips
阅读更多
测试结构如下:
1  定义测试数据
2  将测试数据导入到数据库中
3  将预期结果和实际结果进行对比

目的:
测试selectAllDemo方法,检测查询结果是否有效

使用DBuint框架完成测试
返回测试用的数据库连接对象
protected abstract IDatabaseConnection getConnection() throws Exception;
返回测试用XML数据集对象
protected abstract IDataSet getDataSet() throws Exception;

部分参考csdn文章

package baor.src.dbunit;

import java.sql.ResultSet;
import java.sql.SQLException;
import baor.test.sql.ConnPropInfo;
import baor.test.sql.ConnUtil;
import java.sql.Statement;

public interface CRUDDemo {
	public abstract ResultSet selectAllDemo(Statement stmt, String SQLString)
			throws SQLException;
	public abstract Statement setSTMT(ConnUtil connUtil, ConnPropInfo demo)
			throws SQLException;
}



package baor.src.dbunit;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import baor.test.sql.ConnPropInfo;
import baor.test.sql.ConnUtil;

public class SelectAllDemo implements CRUDDemo {

	@Override
	public ResultSet selectAllDemo(Statement stmt, String SQLString)
			throws SQLException {
		// TODO Auto-generated method stub
		// 创建数据集对象
		ResultSet rs = stmt.executeQuery(SQLString);
		// System.out.println("TestNo" + "\t" + "Description" + "\t" +
		// "Author");
		return rs;
	}

	@Override
	public Statement setSTMT(ConnUtil connUtil, ConnPropInfo demo)
			throws SQLException {
		// TODO Auto-generated method stub
		// 创建stmt对象
		Statement stmt = connUtil.getConnection(demo).createStatement();
		return stmt;
	}

}



package baor.test.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnUtil {
	Connection connection = null;

	public Connection getConnection(ConnPropInfo prop) {
		if (connection == null) {
			try {
				// 调用Class.forName()方法加载驱动程序
				Class.forName(prop.getDriver());
				System.out.println("成功加载MySQL驱动!");
				connection = DriverManager.getConnection(prop.getUrl(),
						prop.getUser(), prop.getPwd());
				System.out.print("成功连接到数据库!");
			} catch (ClassNotFoundException e1) {
				System.out.println("找不到MySQL驱动!");
				e1.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return connection;

	}

	public void closeConnection(Connection conn) {
		try {
			if (conn != null) {
				conn.close();
				conn = null;
				System.out.println("连接关闭!!");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}


package baor.src.dbunit;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;

import org.dbunit.DatabaseUnitException;
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.FlatXmlDataSet;

public class DataUtil {

	public void simgleTableExport(Connection conn, String tableName,
			String xmlFile) {
		IDatabaseConnection connection = null;
		try {
			connection = new DatabaseConnection(conn);
			QueryDataSet dataSet = new QueryDataSet(connection);
			dataSet.addTable(tableName);
			FlatXmlDataSet.write(dataSet, new FileOutputStream(xmlFile));
		} catch (DatabaseUnitException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void allTableExport(Connection conn, String fileName) {
		IDatabaseConnection connection = null;
		try {
			connection = new DatabaseConnection(conn);
			IDataSet dataSet = connection.createDataSet();
			FlatXmlDataSet.write(dataSet, new FileOutputStream(fileName));
		} catch (DatabaseUnitException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}



package baor.src.dbunit;

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;

import org.dbunit.DatabaseTestCase;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.dataset.xml.FlatXmlProducer;
import org.dbunit.ext.mysql.MySqlConnection;
import org.dbunit.operation.DatabaseOperation;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.InputSource;
import java.sql.Statement;
import baor.test.sql.ConnPropInfo;
import baor.test.sql.ConnUtil;
import baor.test.sql.PropInfoFactory;
import baor.test.sql.PropMySQLFactory;

public class DemoTest extends DatabaseTestCase {
	Connection conn;
	ResultSet rs;
	Statement stmt;
	FlatXmlProducer fxp;
	SelectAllDemo testDemo;
	ConnPropInfo demo;
	ConnUtil testConnUtil;
	String sql = "select * from testdemo where TestNo = 1";

	@Before
	public void setUp() throws Exception {
		// 数据库连接对象
		PropInfoFactory test = new PropMySQLFactory();
		demo = test.createPropInfo();
		testConnUtil = new ConnUtil();
		conn = testConnUtil.getConnection(demo);
		// xml文件对象
		InputStream fis = new FileInputStream("C://testdemo1.xml");
		InputSource is = new InputSource(fis);
		fxp = new FlatXmlProducer(is);

	}

	@After
	public void tearDown() throws Exception {
		testConnUtil.closeConnection(conn);
	}

	@Test
	public void testGet() throws Exception {
		testDemo = new SelectAllDemo();
		stmt = testDemo.setSTMT(testConnUtil, demo);
		rs = testDemo.selectAllDemo(stmt, sql);
		while (rs.next()) {
			assertEquals(1, rs.getInt(1));
			assertEquals("test", rs.getString(2));
			assertEquals("paur", rs.getString(3));
		}
		stmt.close();
		rs.close();

	}

	@Override
	protected IDatabaseConnection getConnection() throws Exception {
		// TODO Auto-generated method stub
		return new MySqlConnection(conn, "test");
	}

	@Override
	protected IDataSet getDataSet() throws Exception {
		// TODO Auto-generated method stub
		return new FlatXmlDataSet(fxp);

	}

	/**
	 * 在把xml里的数据导入到db里之前,需要对数据库里的表的数据做的操作。
	 */
	protected DatabaseOperation getSetUpOperation() throws Exception {
		System.out.println("setup...");
		return DatabaseOperation.CLEAN_INSERT;
	}

	/**
	 * 测试执行完以后,需要对数据库里的表里的数据做的操作
	 */
	protected DatabaseOperation getTearDownOperation() throws Exception {
		System.out.println("teardown...");
		return DatabaseOperation.NONE;
	}

}




分享到:
评论

相关推荐

    dbunit-2.0-src.zip_dbunit src_dbunit-2.1-src

    在给定的压缩包文件中,我们有两个版本的DBUnit源码:`dbunit-2.0-src` 和 `dbunit-2.1-src`。这些源码对于理解DBUnit的工作原理、进行自定义开发或调试是非常有价值的。 DBUnit 主要关注的是数据驱动测试,它允许...

    dbunit-2.2.3-prj.rar_DbUnit 2.2_dbunit_单元测试

    5. 集成其他测试框架:DbUnit 可以与JUnit、TestNG等主流的Java测试框架结合使用,为数据库测试带来便利。 在 `dbunit-2.2.3-prj.rar` 这个压缩包中,可能包含以下内容: - `www.pudn.com.txt`:这可能是一个说明...

    使用dbunit测试数据库

    在使用 DbUnit 进行数据库测试时,首先需要准备测试环境。在这个例子中,我们创建了一个名为 "student" 的测试数据库,该数据库是在 MySql 中建立的。接着,在一个名为 "DBUnitSample" 的 Java 工程中,导入了 ...

    DBUnit 进行单元测试

    DBUnit 是一个强大的Java库,专门用于数据库的单元测试。它与JUnit和其他测试框架结合使用,可以帮助开发者在数据库层面上确保代码的正确性。DBUnit 提供了一种结构化的方式来导入和导出数据库数据,使得测试环境...

    dbunit 多个版本.rar

    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-2.4.9 源码

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架的一部分,提供了数据驱动测试的解决方案。在版本 2.4.9 中,DBUnit 提供了一系列的功能,帮助开发者在进行单元测试时能够管理和操作数据库的...

    jpa-lucene-spring-demo:使用JPA,Lucene,Spring,DBUnit和JMockit的演示项目-持久并搜索简单的Book数据

    DBUnit测试是一个很好的例子,可以了解它是如何工作的-它会填充内存中的HSQL数据库,然后使用Lucene查询其中的数据。 该示例很简单,但是说明了如何连接基础结构以集成Lucene和JPA的基本概念。

    使用DbUnit测试数据库.pdf

    DbUnit 是一个专门用于数据库测试的Java库,它扩展了JUnit框架,使得对数据库依赖的代码进行单元测试变得更加便捷和可控。在进行数据库测试时,DbUnit 能够帮助我们管理和控制测试数据库的状态,确保每次测试都能在...

    dbunit测试demo

    标题“dbunit测试demo”表明这是一个关于如何使用 DBUnit 进行测试的实例。描述中提到的链接指向了一篇博客文章,这可能包含了一个具体的 DBUnit 测试用例的详细步骤和解释。尽管我们无法直接访问该链接,但我们可以...

    spring+dbunit测试访问数据库代码

    描述中的博文链接虽然没有具体内容,但通常会包含详细的步骤或示例代码,说明如何在Spring项目中设置和使用DBUnit进行数据库测试。 以下是基于给定的文件名可能涵盖的知识点: 1. **DBUnitDataLoaderImpl.java**:...

    通过DBUNIT做批量对比测试

    DBUNIT 是一个开源的 Java 库,专门用于数据库测试,它提供了一种结构化的方法来设置和验证数据库的状态。在软件开发中,测试是保证代码质量和功能正确性的重要环节,而 DBUNIT 尤其适用于对数据库操作进行测试,...

    dbunit数据库测试工具

    用于数据库测试的一个工具,具有很强的灵活性。也是自己在网上找的,分享一下

    DbUnit2.4.9 全

    DbUnit2.4.9,包括dbunit-2.4.9.jar、dbunit-2.4.9-sources.jar、dbunit-2.4.9-javadoc.jar,是junit的扩展,主要用于代码对数据库操作的单元测试。

    Dbunit数据库连接下载

    Dbunit-2.4.7.jar 文件是Dbunit的核心库,包含了所有必要的类和方法,用于在Java项目中直接使用Dbunit的功能。开发者可以将这个JAR文件添加到项目的类路径中,以便调用Dbunit的API。 LICENSE.txt 文件通常包含软件...

    dbunit-2.4.7所有jar以及dbunit入门教程

    在使用 DBUnit 进行测试时,首先需要引入 dbunit-2.4.7.jar 和其他必要的依赖库,如 JDBC 驱动。接下来,创建一个 `IDatabaseConnection` 实例,该实例代表与数据库的连接。然后,可以使用 `DatabaseConfig` 来配置 ...

    spring与dbunit集成测试

    在软件开发中,Spring框架是Java企业级应用的主流选择,而DBUnit则是一个用于数据库测试的工具。本文将深入探讨如何将Spring与DBUnit整合,以实现高效、可靠的数据库集成测试。 首先,理解Spring的核心功能是至关...

Global site tag (gtag.js) - Google Analytics