Initialiser la conformité JDBC dans la base de données de mémoire avec des déclencheurs pour des tests d'intégration?

StackOverflow https://stackoverflow.com//questions/25086115

Question

Actuellement, nous avons une instance de base de données pour tous nos tests d'intégration. Le schéma de base de données Oracle est synchronisé par un tas de DDLS. Ensuite, nous utilisons DBunit pour remplir et tronquer les tables entre tests. Il y a deux problèmes avec cette approche:

  1. Le temps passé à préparer la base de données est plus que ce qui est passé à tester
  2. à l'occasion, généralement une défaillance de test, les données de test saignent à un test ultérieur et provoquent plus de défaillances.
  3. Je veux isoler les tests en créant une base de données en mémoire (telle que H2) par test. Je prévois de configurer Eclipselink pour générer le DDL (en raison de la conversion de l'oracle DDL en quelque chose d'autre sera un cauchemar que j'imagine). La seule question à ce stade serait de créer des déclencheurs.

    Alors j'ai deux questions ...

    1. Pourrais-je créer une base de données en mémoire (H2 ou autre) d'un schéma Oracle existant, des déclencheurs inclus?
    2. ou, puis-je créer une base de données en mémoire à l'aide de mon entitémanager (génération DDL) et de créer un tas de déclencheurs à la volée, mais avant de tester l'exécution?
    3. pile technologique:

      • printemps: 3.2.8
      • Données de printemps JPA: 1.5.3
      • Eclipse Link: 2.5.1
      • Oracle: 11

      Je connais comment instancier un environnement d'intégration de test de ressort pour charger une base de données en mémoire. Tout simplement pas sûr de la façon dont je peux traduire les trucs oracle (déclencheurs, spécifiquement).

Était-ce utile?

La solution

Pourrais-je créer une base de données en mémoire (H2 ou autre) d'un schéma Oracle existant, des déclencheurs inclus?

Oui, vous pouvez avoir ceci. Nous utilisons Postgres pour toutes nos bases de données physiques et HSQL pour la base de données en mémoire. Nous avons démarré avec l'utilisation de Hibernate pour générer la base de données des classes d'entités, mais nous avons maintenant migré pour utiliser la migration. N'oubliez pas que certains de vos DML et DDL seront personnalisés à Oracle afin que vous fassiez personnaliser pour HSQL ou H2 (assez facile à faire à l'aide de la migration).

ou, puis-je créer une base de données en mémoire à l'aide de mon entitémanager (génération DDL) et de créer une bande de déclencheurs à la volée, mais avant de tester l'exécution?

Vous pouvez nettoyer / remplir votre base de données en mémoire, mais vous le souhaitez. Il y a plusieurs manières:

  1. Extensions de test de voie aérienne - cela facilite la tâche et c'est ce que nous utilisons. https://github.com/flyway/flyway-test-Extensions .
  2. Écrivez un haricot de printemps qui a un profil de test @profile ("test") et insérera des données pour l'environnement de test.
  3. Utilisez un script Import.SQL. Je crois que le harnais de test de printemps cherchera ceci.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top