2009-08-24 7 views
0

J'ai une classe avec une clé primaire stockée dans une base de données. Lors de la création d'une nouvelle instance de la classe, elle peut être extraite de la base de données HSQLDB ou pour les éléments non inclus dans la base de données elle insère tout sauf la clé primaire et est générée automatiquement et renvoyée à la classe pour définir l'attribut id. J'ai alors une méthode getID() pour récupérer cet ID. J'essaye d'écrire un test JUnit qui vérifie que l'ID généré est ce qui est retourné par la méthode getID() mais j'ai déjà utilisé la requête 'CALL IDENTITY' pour récupérer l'ID dans le constructeur et les utilisations suivantes de ce retour 0. Quelle est la meilleure façon de s'assurer que l'ID généré est le même que l'ID retourné par la méthode getID()?Création de tests JUnit pour les éléments de base de données avec des clés générées automatiquement

Répondre

1

Je voudrais vraiment considérer la conception différente pour tester les classes. Accéder à une base de données n'est vraiment pas un test unitaire dans la plupart des cas. Si le générateur d'ID db fonctionne et a un test, vous ne devriez pas en avoir vraiment besoin pour tester votre classe.

A condition que votre classe puisse renvoyer un Id, alors tout ce qui devrait l'intéresser, c'est que votre classe retourne l'identifiant qui y a été entré au bon moment.

+0

Je suis plus à essayer de tester la méthode getID() de la classe. Il se trouve que cet ID est généré par la base de données, donc je ne peux pas simplement vérifier si c'est ce que je lui ai demandé d'instancier. – Haegin

+1

@Haegin - Personnellement, je ne testerai pas explicitement les getters. J'essaie de tester le comportement (qui peut être visible via un getter). Si tout votre 'getID()' le fait en retournant un champ 'private' alors le test ne vaut pas vraiment la peine d'écrire, et le comportement de votre système ne devrait certainement pas dépendre de la persistance des objets. –

Questions connexes