我正在使用dbunit,junit,liquibase,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.
,但同时我看到了
测试尚未终止。我想第一条消息与“主要”功能有关。
任何想法?
答案 0 :(得分:3)
我会冒险猜测,但是如果你使用liquibase.integration.commandline.Main.main(String[])
来运行你的Liquibase更新脚本那么你不应该 - 那个方法退出System.exit(0)
。
相反,请使用look at this forum post来描述如何以编程方式运行Liquibase更新,专门用于单元测试。