`

Unitils结合Dbdeploy管理测试数据库

阅读更多

Unitils是单元测试的一组工具集,介绍见http://www.iteye.com/topic/160004

Dbdeploy是Thoughtworks公司开发的数据库工具,获得Jolt大奖。 

Unitils有自己的一个管理类似于dbdeploy的管理数据库的module -- DBMaintainer,其要求的sql文件名称格式如下所示,要求使用下划线分隔

001_create_users_table.sql

Dbdeploy要求的sql文件格式使用空格分隔

1 create users table.sql

如果在项目中同时使用了dbdeploy和unitils(dbdeploy比dbmaintainer更强大,同时支持undo),由于两种格式不匹配,就需要维护两套sql文件,比较麻烦。目前在dbdeploy中没有发现可以配置文件名的方法,只能从unitils入手,查看unitils的文档找到解决方法。

使用unitils时可以自定义ScriptSource(获取sql file source的一个接口),在unitils.properties中加入

org.unitils.dbmaintainer.script.ScriptSource.implClassName=com.andyao.unitils.DbDeployScriptSource

 DbDeployScriptSource为

public class DbDeployScriptSource extends FileScriptSource {

    public static final String SEPARATOR = " ";


    /**
     * Indicates if the given file is regarded as a script file
     *
     * @param file                    The file
     * @param scriptFileSpecification Specification describing the files that can be regarded as a script file
     * @return True if the given file is regarded as a script file.
     */
    @Override
    protected boolean isScriptFile(File file, ScriptFilesSpecification scriptFileSpecification) {
        String name = file.getName();
        boolean fileExtensionSupported = false;
        for (String fileExtension : scriptFileSpecification.getFileExtensions()) {
            if (name.endsWith(fileExtension)) {
                fileExtensionSupported = true;
                break;
            }
        }
        if (!fileExtensionSupported) {
            return false;
        }

        if (scriptFileSpecification.isExcludeFilesWithoutIndex()) {
            if (!StringUtils.contains(name, SEPARATOR)) {
                return false;
            }
            String indexNrStr = StringUtils.substringBefore(name, SEPARATOR);
            if (!StringUtils.isNumeric(indexNrStr)) {
                return false;
            }
        }
        return true;
    }

    /**
     * Returns the version index of the given script file
     *
     * @param scriptFile The file containing a script
     * @return The version of the script file
     */
    @Override
    protected Long getIndex(File scriptFile) {
        if (StringUtils.contains(scriptFile.getName(), SEPARATOR)) {
            try {
                return new Long(StringUtils.substringBefore(scriptFile.getName(), SEPARATOR));
            } catch (NumberFormatException e) {
                return -1L;
            }
        } else {
            return -1L;
        }
    }
}
 这样就可以同时使用dbdeploy和unitils,做到自动化维护测试数据库。

 

 

 

 

分享到:
评论

相关推荐

    使用Unitils测试DAO

    此类可能包含方法来初始化数据集、执行数据库操作、比较数据集等,简化了使用Unitils进行数据库测试的流程。 5. **源码解析**: 分析DBUnitUtils类的源码可以帮助我们理解作者是如何结合Unitils与DBUnit进行DAO...

    Unitils单元测试

    该框架基于DbUnit和EasyMock,并与JUnit和TestNG兼容,提供了对数据库测试、Mock对象管理和Spring集成的支持。 在数据库测试方面,Unitils能够自动维护和关闭单元测试数据库,支持多种数据库平台如Oracle、Hsqldb、...

    Integrete unitils for database(dao) testing

    在数据库测试方面,Unitils提供了自动化管理数据库和数据的能力,这样开发者就可以专注于编写测试逻辑,而无需过多关注设置和清理数据库的状态。 1. **数据库连接与配置**:Unitils允许开发者通过配置文件轻松地...

    Unitils教程(介绍Unitils的最佳资料)

    Unitils 提供了一些实用的工具和方法来帮助我们编写数据库测试。 例如,我们可以使用 Unitils 的 DatabaseModule 来测试数据库操作。DatabaseModule 提供了一些实用的方法来操作数据库,例如创建、删除和更新数据库...

    Unitils示例

    它支持 JUnit 和 TestNG,提供了多种测试模块,如数据库测试、ORM 支持(如 Hibernate 和 iBatis)、模拟对象等。在本示例中,我们看到 Unitils 被用来处理与数据库相关的测试和对象模拟。 2. **DBUnit 集成** ...

    Unitils-jar包

    Unitils 测试框架目的是让单元测试变得更加容易和可...支持数据库测试,支持利用Mock 对象 进行测试并提供与Spring 和Hibernate 相集成。Unitils 设计成以一种高度可配置和松散耦 合的方式来添加这些服务到单元测试中

    unitils-3.3-with-dependencies.zip

    - `unitils-jdbc.jar`:数据库测试支持模块。 - `unitils-mock.jar`:模拟对象模块。 - `unitils-orm.jar`:ORM测试支持模块。 - `unitils-testng.jar`或`unitils-junit.jar`:针对TestNG或JUnit的适配器。 - `lib/`...

    unitils-2.2

    对于数据库测试,它支持自动配置数据库连接,以及在测试前后自动清理数据,避免了测试间的干扰。此外,它还提供了事务管理功能,可以在测试完成后回滚所有的数据库更改,保持数据一致性。 对于Spring框架的支持,...

    改资源配准测试

    Unitils与DBUtils的结合使用,进一步增强了数据库测试的能力。DBUtils是Apache的一个开源项目,提供了一套简单实用的数据库操作API,包括连接池管理、SQL执行等基础功能。在测试中,DBUtils可以辅助Unitils执行...

    junit单元测试jar包集

    例如,JUnit用于编写测试用例,DBUnit负责数据库相关的测试,Unitils提供ORM支持和进一步的测试便利,而Mockito则用来模拟复杂的依赖关系,使得测试更加独立和可控。了解和熟练使用这些工具,对于提升软件开发效率和...

    对dbunit进行mybatis DAO层Excel单元测试(必看篇)

    Dbunit支持多种数据库管理系统,如MySQL、Oracle、DB2等。 四、Dbunit配置文件 在使用dbunit之前,需要在pom.xml文件中添加相关的依赖项,包括unitils-core、unitils-dbunit、unitils-io、unitils-database和...

    unitils整合dbunit利用excel进行单元测试

    unitils整合dbunit利用excel进行单元测试 包含mock以及整合spring进行测试

    Unitils框架与模块扩展

    Unitils构建在DBUnit与EasyMock项目之上并与JUnit和TestNG相结合,支持数据库测试,支持利用mock对象进行测试并提供与Spring和Hibernate相集成。Unitils设计成以一种高度可配置和松散偶合的框架来添加这些服务到单元...

    接口测试白皮书--淘宝(中国)软件有限公司

    对于复杂的接口测试场景,Unitils 可以简化对象初始化、数据库操作等任务。 ##### 5.5 TestNG TestNG 是一个用于 Java 的测试框架,它提供了丰富的功能集,如并行测试执行、参数化测试等。对于接口测试而言,TestNG...

    Unitil学习

    此外,Unitils还支持数据库测试,这意味着开发者可以在不依赖实际数据库环境的情况下,测试与数据库交互的代码段。它允许创建测试专用的数据库配置,执行测试中的SQL脚本,以及在测试结束时清理测试数据。这样的能力...

    Unitils-core-3.3.jar

    Unitils-core-3.3的jar包

    spock-unitils-0.7-groovy-2.0.zip

    标题 "spock-unitils-0.7-groovy-2.0.zip" 暗示这是一个软件库,可能是一个测试框架或工具,结合了Spock、Unitils和Groovy技术。Spock是一个基于JVM的BDD(行为驱动开发)框架,主要针对Groovy和Java语言,提供了一...

Global site tag (gtag.js) - Google Analytics