hsqldb在使用JUnit测试运行时未显示插入查询的反射

时间:2011-03-09 11:49:42

标签: spring junit hsqldb jdbctemplate

我使用hsqldb作为数据库。我创建了LmexPostParamDao,它有一个方法insertLmexPostParam(NameValuePostParamVO nameValuePostParamVO),它将在数据库中插入数据。为了测试这个方法,我使用JUnit测试在hsqldb中插入一些数据。

我的JUnit测试方法如下:

    @Test
public void testInsertLmexPostParam(){
    String lmexPostParamId = UUID.randomUUID().toString();
    NameValuePostParamVO nameValuePostParamVO = new NameValuePostParamVO();
    nameValuePostParamVO.setLmexPostParamId(lmexPostParamId);
    nameValuePostParamVO.setParamName("adapter_id");
    nameValuePostParamVO.setParamValue("7");

    lmexPostParamDao.insertLmexPostParam(nameValuePostParamVO);
}

我的插入方法如下:

    @Override
public void insertLmexPostParam(NameValuePostParamVO nameValuePostParamVO) {
    String insertQuery = "insert into LMEX_POST_PARAM(lmex_post_param_id, param_name, param_value) values (?,?,?)";
    String[] paramArr = { nameValuePostParamVO.getLmexPostParamId(), nameValuePostParamVO.getParamName(), nameValuePostParamVO.getParamValue()};
    int update = adapterJdbcTemplate.update(insertQuery, paramArr);
    System.out.println(update);
}

当我运行我的测试用例时,它返回1作为输出,这是adapterJdbcTemplate的结果。这意味着数据成功插入。但当我看到我的数据库时,它没有显示我插入的那一行。当我使用相同的值调试我的testcase方法时,它会给出一个异常:数据完整性违规异常。当我看到我的数据库时,它会在我的数据库中显示该行。会是什么问题。我不。当我看到代码时,看起来一切都很好。帮我解决这个问题。

谢谢

1 个答案:

答案 0 :(得分:0)

检查您的CREATE TABLE语句以获取LMEX_POST_PARAM。 CHAR和VARCHAR类型必须定义为CHAR(N)和VARCHAR(N),N大到足以接受您插入的值。例如,VARCHAR(100)。

如果您的问题是数据库未显示成功插入,那么您应该使用WRITE_DELAY = 0或false创建数据库。有关您正在使用的版本,请参阅HSQLDB文档。