2017-02-08 2 views
2

J'ai une suite de tests d'unité de base de données SQL Server créés dans Visual Studio 2013 pour tester les procédures stockées et les fonctions. Les tests fonctionnent bien sur ma base de données locale, mais je veux aussi qu'ils soient exécutés sur la base de données d'un serveur DEV dans le cadre d'un processus de CI.Test d'unité de base de données SQL Server et intégration continue

Pour ce faire, je construis la DLL de test et copie le DLL et le fichier de configuration sur le serveur DEV, puis exécute la ligne de commande vstest.console.exe pour tester. Cela fonctionne très bien sur ma machine locale, mais lorsque je tente de l'exécuter sur DEV je reçois l'exception suivante pour chaque test:

Une erreur est survenue lors de paramètres de tests unitaires SQL Server ont été lus à partir du fichier de configuration. Cliquez sur le projet de test, ouvrez la boîte de dialogue Configuration de test SQL Server dans le menu SQL, ajoutez les paramètres à la boîte de dialogue et reconstruisez le projet.

J'ai essayé d'utiliser le guépard lent à faire en sorte qu'une App.Config de transformation est appliquée avant que la solution est construite et je peux voir que la transformation est appliquée dans le fichier de configuration, mais mes tests échouent.

Est-ce que quelqu'un a trouvé un moyen de le faire? Il semble étrange que la DLL doit être reconstruite pour consommer des modifications de chaîne de connexion dans un fichier de configuration.

J'ai également essayé de suivre les suggestions dans ce post mais sans succès.

Répondre

1

J'ai finalement obtenu ce travail. Il semble qu'il y ait eu une modification de la structure des fichiers de configuration utilisés pour le test unitaire SQL. Dans ma config j'avais une section appelée SqlUnitTesting qui contenait les chaînes de connexion pour ExecutionContext et PrivilegedContext. J'ai remarqué que lorsque j'ai créé un nouveau projet de test unitaire, le nom de la section avait changé pour SqlUnitTesting_VS2013. Changer ma config existante à ceci a résolu le problème. Je peux seulement supposer que j'appelais une version légèrement différente de vstest.console.exe dans les deux environnements.

Pour résumer comment obtenir les tests unitaires SQL Server travaillant dans plusieurs environnements de l'application ligne de commande vstest.console.exe ce sont les étapes à suivre:

  1. installer l'extension lente Cheetah pour Visual Studio , qui gère la transformation de votre fichier App.config en fonction de la configuration de construction sélectionnée.
  2. Assurez-vous que votre fichier App.config comporte une section appelée SqlUnitTesting_VS2013 qui contient vos chaînes de connexion ExecutionContext et PrivilegedContect.
  3. Configurez des transformations guépard lent pour chaque environnement que vous utilisez, en fonction de la configuration de construction (débogage, libération, etc.). Vous aurez besoin de lire le doco Slow Cheetah pour le faire, mais en gros vous configurez des chaînes de connexion pour chaque environnement qui sont transformées en App.config au moment de la construction.
  4. Générez la solution en utilisant la configuration de votre environnement cible.
  5. Copiez la DLL et la configuration du répertoire bin/buildConfiguration correspondant dans votre environnement cible.
  6. Exécutez vstest.console.exe et observez si vos tests réussissent.

J'espère que cela est utile à quelqu'un.