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

JUNIT结合DBUNIT进行单元测试初试

阅读更多

      涉及数据库操作的单元测试,最麻烦的就是基础数据准备、正确的验证数据。这两项工作以前我都是手工完成,存储过程、SQL搞得挺乱,最近试了试DBUNIT还是不错,为准备数据提供了一种思路。

 

测试类的基类如下:

public class TestBase extends DBTestCase
{
	private static String[] paths ={"conf/spring-context.xml"};
	private static ApplicationContext ctx = null;
	
	private static final String DEFAULT_LOG4J_XML_CONFIG_FILE =
		"conf/log4j.properties";
	protected Logger log = Logger.getLogger(getClass());
	private String name;
	private static IDataSet databaseDataSet;
	
	static {
    	     PropertyConfigurator.configure(DEFAULT_LOG4J_XML_CONFIG_FILE);
    	     ctx = new FileSystemXmlApplicationContext(paths);
	}
	
	public TestBase(){}

	public void init(boolean isInit){
	     System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:oracle:thin:@localhost:1521:orcl" );
	     System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "oracle.jdbc.driver.OracleDriver" );
	     System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "SSS" );
	     System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, "SSS" );
	     System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, "APP" );
	}
	
	
	public Object getBean(String beanName){
		return ctx.getBean(beanName);
	}
	

                /**
	 * 初始化数据库连接
	 * @throws SQLException
	 * @throws Exception
	 */
	protected  void initConn(){
		try {
			databaseDataSet = getConnection().createDataSet();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 业务方法执行后,取数据库中的记录
	 * @param tableName
	 * @return
	 * @throws DataSetException
	 */
	protected static ITable getDbTable(String tableName) throws DataSetException{
		return databaseDataSet.getTable(tableName);
	}
	
	/**
	 * 从XML文件中取预先准备的正确数据,用于验证db数据。
	 * @param tableName
	 * @return
	 * @throws DataSetException
	 * @throws Exception
	 */
	protected ITable getXmlTable(String tableName) throws DataSetException, Exception{
		return  new XmlDataSet(new FileInputStream("validatedata/"+tableName+".xml")).getTable(tableName);
	}
	
    protected DatabaseOperation getSetUpOperation() throws Exception
    {
        return DatabaseOperation.NONE;
    }

    protected DatabaseOperation getTearDownOperation() throws Exception
    {
        return DatabaseOperation.DELETE_ALL;
    }

 具体一个测试类:

public class LogFtpletTest extends TestBase {

 LogFtplet log = new LogFtplet();


 public void setUp() {
       super.initConn();
 }
 
 public void testOnFend() throws DataSetException,
   DatabaseUnitException, Exception {


  log.onAppendStart(session, request);//业务方法


  ITable expectedTable = getXmlTable("T_RECEIVE_STATUS");//事先准备的XML正确数据

  ITable actualTable = getDbTable("T_RECEIVE_STATUS");//业务方法执行完后,数据库表数据
  Assertion.assertEqualsIgnoreCols(expectedTable, 
    actualTable, 
    new String[] {"S_ID",  "START_TIME", 
       "UPDATE_TIME"}); //比较需要的列值


  assertEquals(new BigDecimal(2), actualTable.getValue(0, "STATUS"));//比较需要的列值
 }

}

 

分享到:
评论

相关推荐

    Junit+dbunit单元测试jar包

    当我们将`Junit`与`dbunit`结合使用时,可以实现对数据库操作的单元测试。首先,需要在项目中引入`dbunit`的依赖,这通常通过Maven或Gradle等构建工具完成。然后,我们可以在`Junit`的测试类中导入`DbUnitRule`或...

    单元测试JUnit4和DbUnit

    总的来说,单元测试是保证软件质量的关键环节,而JUnit4和DbUnit的结合使用,使得对数据库驱动的应用程序进行单元测试变得更加便捷和可靠。通过深入学习和实践,开发者能够更有效地找出代码中的问题,提高代码的稳定...

    DBUnit 进行单元测试

    在给出的链接中,博主Virgoooos分享了一个具体的DBUnit使用案例,可能涉及了如何创建和使用数据集,以及如何将DBUnit集成到JUnit测试中的具体步骤和示例代码。阅读该博客可以深入理解DBUnit的实际应用。 在实际开发...

    Junit单元测试Junit单元测试Junit单元测试Junit单元测试

    Junit单元测试框架 Junit是Java语言中最流行的单元测试框架,可以帮助开发者编写和运行单元测试,以确保软件的正确性和可靠性。Junit提供了一个统一的测试框架,允许开发者使用Annotations来定义测试用例,实现自动...

    junit单元测试junit单元测试junit单元测试

    使用JUnit进行单元测试时,开发者可以断言(Assert)代码的输出是否符合预期。JUnit提供了多种断言方法,如assertEquals()用于比较预期值与实际值,assertTrue()用于验证条件是否为真,assertFalse()用于验证条件...

    Junit单元测试Junit单元测试Junit单元测试

    可以使用IDE内置的测试工具或者命令行工具运行JUnit测试。 #### 五、JUnit高级特性 - **参数化测试**:允许同一个测试方法使用不同的输入数据执行多次。 - **忽略测试**:有时候可能需要暂时跳过某些测试用例,...

    junit4.10+dbunit2.4.7+httpunit+junitperf的jar包

    它提供了一种在JUnit测试中添加性能指标的方法,可以衡量方法执行时间、吞吐量等。通过`@RunWith(JunitPerf.class)`注解,可以启用性能测试,然后使用`@TestForTime`、`@TestForThroughput`等注解来设定性能目标。这...

    在Eclipse中使用JUnit4进行单元测试

    创建JUnit测试类是单元测试的第一步。在Eclipse中,右键点击项目,选择"New" > "JUnit Test Case"。在此过程中,需要选择要测试的源代码类以及要测试的方法。测试类通常会继承自`org.junit.Test`注解的基类,并且每...

    通向架构师的道路(第二十五天)SSH的单元测试与dbunit的整合.docx

    今天,我们将讨论如何使用JUnit和DbUnit进行单元测试,并将其与SSH整合。 SSH单元测试 在SSH项目中,单元测试是一个非常重要的步骤,它可以确保代码的正确性和可靠性。使用JUnit,我们可以编写单元测试用例来测试...

    junit单元测试jar包集

    这里提到的四个文件是Java开发中常用的单元测试框架和库,分别是JUnit、DBUnit、Unitils和Mockito。让我们逐一深入探讨它们的功能和使用方法。 **JUnit** 是Java领域中最广泛使用的单元测试框架,这里的`junit-4.11...

    单元测试之道(Java):使用JUnit进行单元测试

    单元测试之道(Java):使用JUnit进行单元测试。单元测试是提高代码质量的有效手段,但大部分开发人员由于种种原因都不乐意进行单元测试。

    JUnit单元测试原则 单元测试工具

    #### 四、使用JUnit进行单元测试 1. **一次仅测试一个对象**: - 为了快速定位问题,建议每次仅针对一个对象进行单元测试。 - 这样可以避免因对象间的复杂关系而引起的混淆。 2. **给测试方法起有意义的名字**:...

    Junit 单元测试完整案例

    Junit作为Java领域最常用的单元测试框架,为开发者提供了简单易用的API来进行测试。本案例涵盖了Spring和Struts两大框架的单元测试,旨在帮助开发者掌握如何对这两个流行的Java Web框架进行有效的测试。 一、Junit...

    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`:这可能是一个说明...

    Junit单元测试文档

    junit3 junit4 api,单元测试的利器

    主题:在Spring中结合Dbunit对Dao进行集成单元测试

    在Spring框架中,进行Dao层的集成单元测试时,常常会结合Dbunit工具来实现数据库相关的测试。Dbunit是一款强大的Java库,它扩展了JUnit,为数据库提供了结构化数据的导入和导出,使得测试更加方便和可靠。下面将详细...

    使用JUnit进行单元测试PPT

    【使用JUnit进行单元测试】 单元测试是软件开发过程中的重要环节,它主要目的是验证程序的各个独立组件(如方法或类)是否按照预期工作。JUnit是Java编程语言中最常用的单元测试框架,它允许开发者创建和运行针对...

Global site tag (gtag.js) - Google Analytics