質問

現在、私たちの統合テストすべてのデータベースインスタンスを1つ持っています。 Oracle DatabaseスキーマはDDLの束によって同期されています。その後、DBUnitを使用してテスト間のテーブルを入力して切り捨てます。このアプローチには2つの問題があります:

  1. データベースの準備に費やされた時間は、除用されたテスト
  2. 以上の時間以上です。
  3. 時には、通常テストの失敗、テストデータは後続のテストに出血し、より多くの失敗を引き起こします。
  4. テストごとにメモリ内データベース(H2など)を作成することでテストを分離したい。私はDDLを生成するためにEclipSeLinkを設定することを計画しています(Oracle DDLを他の何かに変換するのは悪夢になるだろうと思います)。その時点での唯一の問題はトリガーを作成することです。

    だから私は2つの質問をしています...

    1. 既存のOracleスキーマからIn-Memoryデータベース(H2または任意のもの)を作成でき、トリガーは含まれていますか?
    2. または、私のEntityManager(DDL生成)を使用してメモリ内データベースを作成し、その場でのトリガーの束を作成することができますが、テスト実行の前には?
    3. 技術スタック:

      • 春:3.2.8
      • スプリングデータJPA:1.5.3
      • Eclipseリンク:2.5.1
      • Oracle:11

      スプリングテスト統合環境をインスタンス化してメモリ内データベースをロードする方法に精通しています。私がOracleのものを翻訳できる方法がわからない(具体的にはトリガー、)。

役に立ちましたか?

解決

既存のOracleスキーマからインメモリデータベース(H2またはOrys)を作成でき、トリガーは含まれていますか?

はい、これを持つことができます。インメモリデータベースのすべての物理データベースとHSQLのすべてのPostgresを使用します。 Hibernateを使用してエンティティクラスからデータベースを生成することで開始しましたが、今やFlywayを使用するように移行しました。 DMLとDDLの一部がOracleにカスタムになるため、HSQLまたはH2(Flywayを使用してやるのはかなり簡単)にカスタマイズする必要があることに注意してください。

または、私のEntityManager(DDL生成)を使用してメモリ内データベースを作成し、その場でトリガーの束を作成することができますが、テスト実行の前には?

インメモリデータベースを清掃/操作することができます。複数の方法があります:

  1. Flyway Test Extensions - これは簡単に、使用するものです。 https://github.com/flyway/flyway-test-extensions
  2. テストプロファイル@profile( "test")を持つスプリングBeanを書き込み、テスト環境のデータを挿入します。
  3. import.sqlスクリプトを使用してください。私は春のテストハーネスがこれを探すことを見ると思います。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top