Frage

Derzeit haben wir eine Datenbankinstanz für alle unsere Integrationstests. Das Oracle-Datenbankschema wird von einem Bündel DDLs synchronisiert. Dann verwenden wir dbunit, um die Tabellen zwischen Tests aufzufüllen und abschneiden. Mit diesem Ansatz gibt es zwei Probleme:

    .
  1. Die Zeitaufwand, die die Vorbereitung der Datenbank aufwendig ist, ist mehr als das, was Sie getestet haben
  2. Gelegentlich, in der Regel ein Testfehler, blutet Testdaten zu einem nachfolgenden Test und verursacht mehr Fehlern.
  3. Ich möchte die Tests isolieren, indem Sie eine In-Memory-Datenbank (z. B. H2) pro Test erstellen. Ich plane, EclipSelink zu konfigurieren, um die DDL zu generieren (da das Oracle DDL in etwas anderes ein Albtraum ist, das ich mir vorstellen möchte). Das einzige Problem an diesem Punkt wäre es, Auslöser zu erstellen.

    Ich habe also zwei Fragen ...

      .
    1. Kann ich eine In-Memory-Datenbank (H2 oder was auch immer) von einem vorhandenen Oracle-Schema erstellen, in dem Auslösern enthalten?
    2. oder, kann ich mit meiner EntityManager (DDL-Generation) eine in der Speicherdatenbank erstellen und in der FLY ein paar Auslöser erstellen, jedoch vor der Testausführung?
    3. Technologiestapel:

      • feder: 3.2.8
      • Federdaten JPA: 1.5.3
      • Eclipse Link: 2.5.1
      • Oracle: 11

      Ich bin vertraut, wie man eine Spring-Test-Integrations-Umgebung instanziiere, um eine In-Memory-Datenbank zu laden. Ich bin mir einfach nicht sicher, wie ich das Oracle-Zeug (Auslöser, spezifisch) übersetzen kann.

War es hilfreich?

Lösung

Ich könnte eine In-Memory-Datenbank (H2 oder was auch immer) aus einem vorhandenen Oracle-Schema erstellen, ausgelöst, inklusive Trigger?

ja, du kannst das haben. Wir verwenden Postgres für alle unsere physischen Datenbanken und HSQL für die In-Memory-Datenbank. Wir haben mit der Verwendung von Winterschlaf begonnen, um die Datenbank aus den Entitätsklassen zu generieren, aber jetzt migriert, um Flyway zu verwenden. Denken Sie daran, dass einige Ihrer DML- und DDL-Customs an Oracle sind, sodass Sie sich für HSQL oder H2 anpassen müssen (ziemlich einfach mit dem Flyway).

oder, kann ich mit meiner EntityManager (DDL-Generierung) eine in der Speicherdatenbank erstellen und eine Reihe von Triggern in der FLY erstellen, jedoch vor der Testausführung?

Sie können Ihre In-Memory-Datenbank reinigen / füllen, jedoch wünschen Sie sich jedoch. Es gibt mehrere Möglichkeiten:

    .
  1. Flyway-Testerweiterungen - das macht es einfach und ist das, was wir verwenden. https://github.com/flyway/flyway-test-extensions . .
  2. Schreiben Sie eine Federbohne mit einem Testprofil @profile ("test") und fügt Daten für die Testumgebung ein.
  3. Verwenden Sie ein Import.SQL-Skript. Ich glaube, der Frühlingsprüfgurt wird danach suchen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top