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

时间:2013-11-27 13:10:17

标签: database postgresql unit-testing initialization gradle

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

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

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

1 个答案:

答案 0 :(得分:3)

解决方法1:

root 项目中定义'psql'任务

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

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

test.dependsOn psql

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

test.dependsOn(rootProject.tasks.psql)

溶液2:

使用configuration injection。只需在 root 项目中添加以下内容:

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

Solution3:

使用方法iso任务,但我猜这不是'gradle'。 有关详细信息,请参阅inherited_properties_and_methods