5

データベースにアクセスするDAOテストがたくさんあります。H2のようなメモリデータベースでJavaを使用してそれらをモックしようとしました。しかし問題は、ddl スクリプトに、H2 でサポートされていないように見えるパーティション ステートメントが含まれていることです。私は基本的に、本番環境と同じ ddl スクリプトを使用したいと考えており、「単体」テスト用にそれらを変更したくありません。HSQL も試してみましたが、H2 の方が oracle によく似ていることがわかりましたが、それでもパーティションはサポートされていません。これに対する回避策はありますか?

のOracleインスタンスからメモリ内データベース構造を作成する H2の使用について説明していますが、その欠点についてはすでに述べました。いくつかの代替手段を探しています。

4

2 に答える 2

2

意味のあるテストが必要な場合は、本番環境で実行するのと同じデータベース バージョンのインスタンスに対してテストを実行する必要があります。

于 2013-02-12T23:54:59.430 に答える
0

Oracle のデータ ディクショナリを使用して、テーブル、それらの関係、インデックス、制約などを含む H2 スキーマを生成できます。このように生成されたスキーマをインメモリ H2 データベースのテストに使用しています。

たとえば、すべてのテーブルとその列を取得するには、次のクエリを使用できます。

SELECT 
  ut.table_name,
  utc.column_name,
  utc.data_type,
  utc.data_length,
  utc.data_precision
  FROM user_tables ut JOIN user_tab_columns utc
    ON ut.table_name = utc.table_name;

同様のクエリを、外部キー、その他の制約、インデックス、シーケンス、およびテストに必要なその他すべてのものに対して作成できます。さらに必要なのは、クエリの結果を H2 DDL スクリプトに変換するためのテンプレート エンジンです。

于 2013-02-12T21:47:22.067 に答える