48 votes

Comment tester le code jdbc en java?

J'aimerais écrire des tests unitaires pour le code qui se connecte à une base de données, exécute une ou plusieurs requêtes, et traite ensuite les résultats. (Sans l'aide d'une base de données)

Un autre développeur, a écrit notre propre source de données, de Connexion, de Déclaration, PreparedStatement, et le jeu de résultats de la mise en œuvre qui sera de retour les objets correspondants basé sur un fichier de configuration xml. (on pourra utiliser le bidon de source de données, et il suffit d'exécuter des tests sur les jeux de résultats, il retourne).

Sommes-nous de réinventer la roue? Fait quelque chose comme cela existe déjà pour les tests unitaires? Il existe d'autres / de meilleures façons de test de code jdbc?

33voto

Tatu Lahtela Points 2876

Vous avez plusieurs options:

  • Se moquer de la base de données avec une Maquette de la bibliothèque, par exemple JMock. L'énorme inconvénient de ce que vos requêtes et les données seront très probablement ne pas être testées.
  • Utilisez des poids légers de la base de données pour les tests, tels que HSQLDB. Si vos questions sont simples, c'est probablement la meilleure façon d'aller.
  • Dédier une base de données pour les tests. DBUnit est une bonne option, ou si vous utilisez Maven, vous pouvez également utiliser le sql-maven-plugin à installer et à démonter la base de données correctement (attention aux dépendances entre les tests). Je recommande cette option, car il vous donnera la plus grande confiance que les requêtes de fonctionner correctement avec votre db fournisseur.

Parfois, il est nécessaire et utile de faire ces tests configurable de sorte que ces tests sont exécutés uniquement si la base de données est disponible. Cela peut être fait avec, par exemple, construire des propriétés.

25voto

WMR Points 5869

Vous pouvez utiliser DBUnit avec un HSQLDB qui peut lire ses données initiales à partir de fichiers CSV, par exemple.

8voto

Jim Hurne Points 2584

J'aime utiliser une combinaison de:

Vous pouvez obtenir assez loin avec juste DBUnit et HSQLDB. Unitils offre le dernier mile de code de gérer et de réinitialiser la base de données de l'état. Il fournit également une belle façon de gérer la base de données des modifications de schéma et le rend facile à utiliser spécifique RBDMS (Oracle, DB2, SQL Server, etc). Enfin, Unitils offre de belles wrappers autour de DBUnit qui modernise l'API et fait DBUnit beaucoup plus agréable de travailler avec.

Si vous n'avez pas vérifié Unitils encore, vous avez certainement doit. Unitils est souvent négligé et sous-estimé.

6voto

Sunny Milenov Points 10978

Utilisez n'importe lequel des frameworks Mock pour une telle tâche. ( jMock , etc. )

Quelques exemples

4voto

S.Lott Points 207588

C'est pourquoi vous avez Derby (maintenant appelé JavaDB) ou sqlite - ce sont de petites bases de données simples que vous pouvez créer, charger, tester et détruire rapidement et simplement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X