Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 对于测试套件,用内存中的HSQLDB替换MYSQL不起作用_Spring_Hibernate_Struts2_Testng_Hsqldb - Fatal编程技术网

Spring 对于测试套件,用内存中的HSQLDB替换MYSQL不起作用

Spring 对于测试套件,用内存中的HSQLDB替换MYSQL不起作用,spring,hibernate,struts2,testng,hsqldb,Spring,Hibernate,Struts2,Testng,Hsqldb,我们有一个使用Struts、Spring和hibernate的应用程序。 以前,我们使用mysql数据库来运行使用testng框架的测试套件。 现在我们想使用HSQLDB的“内存”数据库。 为了在“内存”模式下使用HSQLDB,我们已经进行了所有必需的代码更改 例如 数据源url=jdbc:hsql:mem:TEST\u DB 用户名=sa 密码= Driver=org.hsqldb.jdbcDriver Hibernate dialogue=org.Hibernate.dialogue.hsq

我们有一个使用Struts、Spring和hibernate的应用程序。 以前,我们使用mysql数据库来运行使用testng框架的测试套件。 现在我们想使用HSQLDB的“内存”数据库。 为了在“内存”模式下使用HSQLDB,我们已经进行了所有必需的代码更改

例如

数据源url=jdbc:hsql:mem:TEST\u DB

用户名=sa

密码=

Driver=org.hsqldb.jdbcDriver

Hibernate dialogue=org.Hibernate.dialogue.hsqlDialogue

Hibernate.hbm2ddl.aoto=create

   @Autowired
private DriverManagerDataSource dataSource;
private static Connection dbConnection;
private static IDatabaseConnection dbUnitConnection;
private static IDataSet dataSet;
private MockeryHelper mockeryHelper;

    public void startUp() throws Exception {
mockeryHelper = new MockeryHelper();
        if (dbConnection == null) {
            dbConnection = dataSource.getConnection();
            dbUnitConnection = new DatabaseConnection(dbConnection);
            dbUnitConnection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqldbDataTypeFactory());
            dataSet = new XmlDataSet(new FileInputStream("src/test/resources/test-data.xml"));
        }
        DatabaseOperation.CLEAN_INSERT.execute(dbUnitConnection, dataSet);
}
我们已经对基类进行了必要的代码更改,在每次测试之前和之后,我们都会启动和拆除数据库。 我们使用test-data.xml文件将测试数据插入到使用testng框架创建的数据库中。现在我的问题是

1.当我运行测试用例时,数据库被创建,数据也被正确插入。然而,当我试图从struts的拦截器中检索它们时,我各自的DAO返回空的对象列表

2.我们使用HSQLDB版本1.8.0.10。其他项目也有相同的配置。在该项目中,大多数测试用例都成功运行,但是对于其中一些测试用例,数据的排序顺序是不正确的。 我们发现HSQLDB对排序是区分大小写的。还有一个属性sql.ignore\u case,当设置为true时,排序不区分大小写。但这对我们不起作用。 有人能帮忙吗?
谢谢你

恐怕
sql.ignore\u case
在您的HSQLDB版本中不可用,因为它甚至不在上一个稳定版本(2.2.9)中,与文档所说的相反。但是,如中所述,最新快照确实包含它。我不是在使用1.8我自己,而是在创建任何表之前执行
SET IGNORECASE TRUE
,在2.2.9中就是这样。如果您确实需要1.8,第三种选择可能是从最新的源代码中选择相关代码,将其添加到1.8源代码中并重新编译,不知道这有多困难/容易