Je suis allé au point dans mon projet simple où je suis prêt à tester le DAL.Unité testant le DAL - veuillez critiquer
je essentiellement une classe appelée FooDataAccess avec plusieurs fonctions très simples, disons trois d'entre eux comme ceci:
int InsertFoo(string fooName)
void UpdateFoo(int fooID, string fooName)
void InsertFoosDepedency(int fooID, string someValue)
Ce que je faisais était ce - mettre 4 Scripts SQL dans mon projet de test unitaire, le dernier un comme ressource incorporée.
1) Créer (test unitaire) Script de base de données, 2) Créer des objets Script, 3) Insérer des valeurs de consultation de table et 4) Supprimer tout Mais une Table Valeurs
L'idée est, tout le monde en utilisant d'abord le projet devrait manuellement exécuter les scripts 1-3 à la main en tant que configuration unique. Ensuite, exécuter le script # 4 au démarrage de chaque test unitaire ... (dans les petites applications, vous pouvez même exécuter tous au niveau de test)
OK, so far so good ...
J'ai donc ma configuration de base de données de test unité, comme une ardoise vide. Tester la première fonction InsertFoo() est évidemment très simple. J'appelle la fonction, puis juste Assert (ExecuteSQL ("select count (*) de foo")> Assert (ExecuteSQL ("sélectionnez fooName de t_foo") = attendu)), etc.
Où je Je suis un peu coincé, ce sont ceux qui nécessitent des dépendances, comme la 3ème fonction dans mon exemple, ou même la mise à jour.
Serait-il logique d'abandonner temporairement toutes les contraintes de clé étrangère pour la portée de mon test? Sinon, pour tester la fonction InsertFoosDepedency (int fooID, string someValue), je devrais d'abord exécuter arbitrairement sql (insérer manuellement un enregistrement dans la table FOO et retourner le FooID) ...
OU, devrais-je juste faire le dernier?
Tous les commentaires sont grandement appréciés. MISE À JOUR: Son fonctionnement proprement avec SQL en ligne pour créer les dépendants. Je suppose que je suis juste à la recherche de commentaires & critisism sur cette méthode pour les tests unitaires DAL. Merci encore
J'utilise déjà Mock Objects, pour tous les appelants de ma DAL. Mais j'aimerais quand même tester unitaire les fonctions DAL elles-mêmes. Je ne suis pas trop peur de visser la base de données, car cela est une base de données créée spécifiquement pour l'unité-test .. Peut-être que je devrais appeler InsertFoo() pour créer mon foo et obtenir ma carte d'identité pour les dépendances? mais cela casserait-il le concept d'être un test 'unité' ??? – dferraro
Je ne suis pas sûr de t'avoir suivi. Sûrement les dépendances doivent être insérées en premier, de sorte que quelque chose puisse en dépendre? Voulez-vous dire les personnes à charge plutôt que les dépendances? – serialhobbyist
Vous avez raison, ma faute. Je voulais dire les personnes à charge. Merci encore – dferraro