2

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に設定すると、並べ替えで大文字と小文字が区別されなくなります。しかし、これは私たちにとってはうまくいきません。誰かがこれを手伝ってくれますか?よろしくお願いします。

4

1 に答える 1

0

sql.ignore_caseドキュメントが言うこととは反対に、最後の安定版(2.2.9)にもないため、HSQLDBバージョンでは利用できないと思います。ただし、このスレッドに記載されているように、最新のスナップショットには含まれています。私は自分で1.8を使用していませんがSET IGNORECASE TRUE、テーブルの作成前に実行すると、2.2.9で機能します。本当に 1.8 が必要な場合は、最新のソースから関連するコードを選択し、それを 1.8 のソースに追加して再コンパイルするという 3 つ目のオプションがあります。

于 2013-03-05T03:43:31.440 に答える