0

我正在使用 dbunit、junit、liquibase、hsqldb 测试数据源层。我正在使用 hsqldb 的内存状态。每次开始测试时,我都会通过命令行使用 liquibase 创建数据库结构:

 @BeforeClass
 public static void setupDatabase() throws Exception
 {
    ...
    try{
        Main.main( new String[]{
            "--defaultsFile=db/properties/db.test.properties",
            "--logLevel=debug",
            "update"}
        );
    }catch(Exception e){
        System.out.println(  e );
    }
    System.out.println( "QQQQ" );
    ...
 }

在我可以看到的输出中,sql 脚本已成功执行:

Connected to SA@jdbc:hsqldb:mem:datasourcedb
...
Successfully released change log lock

Liquibase Update Successful

但由于某种原因,我看不到System.out.println. 我在 IDEA 中开发。我Process finished with exit code 0.在调试窗口中看到,但同时我看到测试尚未终止。我想第一条消息与“主要”功能有关。

任何想法?

4

1 回答 1

3

我会大胆猜测,但如果您使用liquibase.integration.commandline.Main.main(String[])的是运行 Liquibase 更新脚本,那么您不应该这样做——该方法以System.exit(0).

相反,看看这个论坛帖子,它描述了如何以编程方式运行 Liquibase 更新,特别是在单元测试中使用。

于 2011-09-29T03:06:22.923 回答