我正在使用dbunit, junit, liquidbase, hsqldb测试数据源层。我在hsqldb的内存状态下使用。每次开始测试时,我都通过命令行使用liquibase创建db结构:
@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.
在调试窗口,但在同一时间我看到测试尚未终止。我想第一条消息与"main"函数有关。
任何想法?
我要大胆猜测,但如果您使用liquibase.integration.commandline.Main.main(String[])
来运行您的Liquibase更新脚本,那么您不应该-该方法与System.exit(0)
一起退出。
相反,看看这个论坛帖子,它描述了如何以编程方式运行Liquibase更新,特别是在单元测试中使用。