Spring 对于测试套件,用内存中的HSQLDB替换MYSQL不起作用
我们有一个使用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=createSpring 对于测试套件,用内存中的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
@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源代码中并重新编译,不知道这有多困难/容易