2010-04-13 3 views
1

Existe-t-il des instructions sur l'utilisation du développement de tests unitaires Visual Studio 2008? Je suis en train de développer une application web n-tier utilisant le framework d'entité. Mon problème est de créer un test unitaire pour les méthodes qui INSERT ou UPDATE à la base de données.Guide sur le test unitaire de Visual Studio 2008

Répondre

1

Ne pas créer des tests unitaires pour tester si vous êtes INSERTING ou DELETING ou faire quelque chose à la base de données. Il n'y a tout simplement pas besoin. Si vous utilisez ADO.NET ou un ORM par exemple, ce code aura été testé. Vous saurez qu'il fait ce qu'il dit sur la boîte. Les données de test stockées dans une base de données ne sont pas un test unitaire. Une bonne question sur what makes a unit test, a unit test. Pour votre code qui utilise votre code de base de données (DAL, ORM etc ...) vous allez insérer mock objects (doubles de test) qui permettra au reste de votre application de croire qu'il interagit avec une base de données, alors que ce n'est pas le cas.

Si vous souhaitez vous assurer que votre code prend effectivement des données et les stocke sur un DB ou un fichier externe, vous devrez écrire integration tests pour vérifier cela. Une méthode possible consiste à utiliser une base de données de test configurée à chaque installation de test avec des données fictives. Vous effectuez ensuite vos tests, puis réinitialisez la base de données à son état antérieur. L'avantage de ceci est que vous aurez des tests unitaires pour votre logique métier et des tests d'intégration pour vous assurer que vous avez correctement câblé le code de la base de données.

0

Il ne s'agit pas vraiment des outils que vous utilisez, mais plutôt de la conception.

La solution à votre problème consiste à reconcevoir votre code pour pouvoir utiliser des objets stub ou fictifs.

Une autre option consiste à s'assurer que tout le code de test est effectué dans une nouvelle transaction.

Si vous commencez à travailler avec EF 4.0, vous pouvez bénéficier du IObjectSet class.

Questions connexes