database - 如何在使用gradle测试之前重建数据库?

标签 database postgresql unit-testing initialization gradle

我的项目有两个子项目,我的大部分测试都依赖于数据库连接。由于 postgres 是目标数据库,我也想在我的 junit 测试中使用它。在开始测试套件(所有测试)之前,我想用一些值(重新)构建和初始化数据库。

在执行gradle build之前,我可以从命令行执行psql -h host -d database -u usrname -f filename

我如何将其合并到 gradle 测试任务中? (我正在使用 junit 4,如果这很重要的话)

最佳答案

解决方案1:

在您的项目中定义“psql”任务

task psql (type:Exec) { 
    commandLine 'psql', '-h', 'host', '-d', 'database', '-u', 'usrname', '-f' , 'filename'    
}

如果您希望此任务仅运行一次,请在您的项目中添加以下内容

test.dependsOn psql

如果您希望为每个子项目运行此任务,请在相应的子项目中添加以下内容

test.dependsOn(rootProject.tasks.psql)

解决方案2:

使用configuration injection 。只需在您的项目中添加以下内容即可:

subprojects {
    task psql (type:Exec) { 
        commandLine 'psql', '-h', 'host', '-d', 'database', '-u', 'usrname', '-f' , 'filename'    
    }
    test.dependsOn(psql)
}

解决方案3:

使用 iso 任务方法,但我猜这不是“gradle”。 请参阅inherited_properties_and_methods了解更多信息

关于database - 如何在使用gradle测试之前重建数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20243440/

相关文章:

php - 由数据库填充的自动完成表单?

sql - 函数参数anyelement,PostgreSQL bug?

java - 如何使用 JUnit 测试特定于操作系统的方法?

database - 我想知道当我销售我的软件时我有哪些 DBMS 选项

python - 如何使用更新查询增加 postgres 中的值(python)

sql - PostgreSQL 和用于分析频繁大型插入的性能成本的工具

performance - 唯一约束如何影响 Postgres DB 中的写入性能

laravel - Laravel 的 eloquent 查询和相同的关联 SQL 查询(使用 toSql() 方法获得)之间的不同结果

c# - 如何对以下方法进行单元测试?

javascript - Angular SVG 单元测试如何获取 SVGLengthList