2010-12-03 35 views
2

Je joue avec MVC2, Entity Framework et CTP4 en utilisant uniquement la persistance du code. J'ai créé des tests unitaires dans MSUnit pour mes objets de domaine, y compris certains pour voir comment la persistance fonctionne dans ce paradigme. J'utilise Sql Server CE 4.0 pour ces tests. Cela fonctionne bien, sauf pour un problème ... les données semblent être persistantes entre les tests dans la même classe. J'ai déjà eu l'occasion d'utiliser Java, Hibernate Annotations et HSQLDB et dans ce cas, la base de données est créée et arrachée à chaque exécution de test. Dans SqlCompact, cependant, j'ai quelques tests qui utilisent le même appareil de données de test et se retrouvent avec des violations de contraintes si je les exécute tous les deux.Nettoyage des données dans la base de données SQLCompact entre les tests MsUnit

Je peux résoudre ce problème via des hacks pour supprimer des tables/supprimer des données explicitement dans [TestCleanup] mais quelle est la bonne façon de s'assurer que je commence avec un nouveau DB pour chaque test en utilisant SQL Compact dans ce cas? Je suis sûr que la réponse est simple, mais je n'arrive pas à la trouver nulle part. Merci.

EDIT: Pour l'instant, je fais ça, ça marche - mais je ne l'aime pas. De meilleures idées sont les bienvenues:

[TestCleanup] 
    public void teardown() 
    { 
     mgr.Database.DeleteIfExists(); 
     mgr.Database.Create(); 
    } 

Répondre