我们有一个使用 Struts、Spring 和 hibernate 的应用程序。以前,我们使用 mysql 数据库来使用 testng 框架运行测试套件。现在我们要使用 HSQLDB 的“内存”数据库。我们已经进行了所有必需的代码更改,以便在“内存中”模式下使用 HSQLDB。
例如。
数据源 url = jdbc:hsql:mem:TEST_DB
用户名 = sa
密码 =
驱动程序 = org.hsqldb.jdbcDriver
休眠方言= org.hibernate.dialect.HSQLDialect
Hibernate.hbm2ddl.aoto = 创建
@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 的拦截器中检索它们时,我各自的 daos 返回空对象列表。
2.我们使用HSQLDB 1.8.0.10版本。对其他项目进行相同的配置。在该项目中,大多数测试用例都成功运行,但其中一些测试用例的数据排序顺序不正确。我们发现 HSQLDB 对排序是区分大小写的。并且有一个属性 sql.ignore_case,当设置为 true 时,排序变得不区分大小写。但这对我们不起作用。有人可以帮忙吗?提前致谢。