Struts、Spring、およびhibernateを使用するアプリケーションがあります。以前は、testngフレームワークを使用してテストスイートを実行するためにmysqldatabseを使用していました。ここで、HSQLDBの「インメモリ」データベースを使用します。「メモリ内」モードでHSQLDBを使用するために必要なすべてのコード変更を行いました。
例:
データソースのURL=jdbc:hsql:mem:TEST_DB
ユーザー名=sa
パスワード=
ドライバー=org.hsqldb.jdbcDriver
Hibernate方言=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);
}
各テストの前後にデータベースの起動と破棄を行う基本クラスに必要なコード変更を行いました。testngフレームワークを使用して作成されたデータベースにテストデータを挿入する場所からtest-data.xmlファイルを使用します。今私の質問は
1.テストケースを実行すると、データベースが作成され、データも正しく挿入されます。ただし、ストラットのインターセプターからオブジェクトを取得しようとすると、それぞれのdaosは空のオブジェクトリストを返します。
2.HSQLDBバージョン1.8.0.10を使用します。他のプロジェクトでも同じ構成が作成されます。そのプロジェクトでは、ほとんどのテストケースが正常に実行されていますが、一部のテストケースでは、データの並べ替え順序が正しくありません。HSQLDBでは、並べ替えで大文字と小文字が区別されることがわかりました。また、プロパティsql.ignore_caseが1つあり、trueに設定すると、並べ替えで大文字と小文字が区別されなくなります。しかし、これは私たちにとってはうまくいきません。誰かがこれを手伝ってくれますか?よろしくお願いします。