HSQLDB:如何在测试后截断数据库?

时间:2015-06-22 10:00:34

标签: java database unit-testing testing hsqldb

我一直在尝试创建测试数据库并在测试后将其清除,但它没有被删除。因此抛出例外 - 对象名已存在:Statement in Statement ... 这是我在BeforeClass和AfterClass注释中的代码 -

@BeforeClass
public static void initialize() throws Exception {
    databaseTester = new JdbcDatabaseTester(org.hsqldb.jdbcDriver.class
    .getName(), "jdbc:hsqldb:file:testdatabase", "sa", "");
    createTables(databaseTester.getConnection().getConnection());

    String inputXml = "<dataset>" 

            +"<user UID=\"9999\" NAME=\"XYZ\" PHONE=\"9999999999\" PASSWORD=\"qwerty\" SALT_KEY=\"0\" DEVICE_UUID=\"99999\" LID=\"1\" USER_TYPE=\"1\" OTP_STATUS=\"A\" STATUS=\"0\" POSTAL_ADDRESS=\"0\" CREATE_USER=\"0\" UPDATE_USER=\"0\" />"
            +"<user UID=\"9998\" NAME=\"ABC\" PHONE=\"9999999998\" PASSWORD=\"qwerty\" SALT_KEY=\"0\" DEVICE_UUID=\"99998\" LID=\"1\" USER_TYPE=\"1\" OTP_STATUS=\"A\" STATUS=\"0\" POSTAL_ADDRESS=\"0\" CREATE_USER=\"0\" UPDATE_USER=\"0\" />"
            +"<user_category  UCID=\"9999\" UID=\"0\" DEVICE_UUID=\"77777\" CID=\"7\" CREATE_USER=\"0\" UPDATE_USER=\"0\" />" 

                    + "</dataset>";

    IDataSet dataSet = new FlatXmlDataSetBuilder().build(new StringReader(inputXml));
    databaseTester.setDataSet(dataSet);
    databaseTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT);
    databaseTester.setTearDownOperation(DatabaseOperation.DELETE_ALL);
    databaseTester.onSetup();

}

@AfterClass
public static void cleanUp() throws Exception {
     databaseTester.onTearDown();
     databaseTester = null;
}

它不会被自动删除,而是我需要手动删除测试后创建的文本文件的内容。

1 个答案:

答案 0 :(得分:0)

运行声明:

DROP SCHEMA PUBLIC CASCADE

参见指南:

http://hsqldb.org/doc/2.0/guide/databaseobjects-chapt.html#dbc_schemas_schema_objects