2010-11-15 18 views
1

J'écris des tests fonctionnels et la méthode pour laquelle j'écris les tests doit accéder à un fichier dans le dossier App_Data. J'ai essayéTests fonctionnels obtenant un fichier du dossier App_Data

System.Web.HttpContext.Current.Server.MapPath("~/App_Data/test.txt"); 

ainsi que

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "test.txt"); 

Les deux d'entre eux ne fonctionnent pas. Y a-t-il un moyen d'y parvenir en test fonctionnel?

Toutes les idées à cet égard est très appréciée.

Merci,

Raja

+0

En quoi ne fonctionnent-ils pas? Avez-vous un message d'erreur quelconque? – mellamokb

+0

Il lance la référence d'objet non définie sur une instance d'un objet pour le premier. Cela fait sens puisque Httpcontext.Current sera nul puisque j'exécute un test fonctionnel et n'instancie pas ce service via HTTP. Deuxième tentative (path.combine) ne fonctionne pas car il prend juste c: \ App_Data \ Test.txt qui se traduit par l'exception de fichier introuvable. – Raja

Répondre

0

Je trouve enfin une solution (avec l'aide de mon architecte de solutions). Nous avons mis en place une configuration d'application pour le projet de test fonctionnel et nous avons défini le nom de fichier comme l'un des paramètres de l'application. Après cela nous avons spécifié le chemin relatif au fichier réel comme

[DeploymentItem(@"..\..\Project1\App_Data\Test.txt")] 

attribut pour la classe de test. Nous avons ajouté simple hack pour utiliser un chemin absolu si elle est dans le test (app config) et

Server.MapPath("Test.txt") 

si ce n'est pas test. La logique de la solution est que, puisque nous plaçons le fichier en tant que DeploymentItem, il va directement dans le dossier TestResults respectif, donc si nous utilisons un chemin absolu, il sera capable de le référencer.

Espérons que cela aide quelqu'un.