41 votes

Le fichier XML ne copie pas dans le répertoire de sortie de test

Visual Studio 2010, x64-linge, utilisant le serveur web intégré à l'hôte d'un service WCF avec un ensemble de tests unitaires à l'aide de l'intégré dans le framework de test.

J'ai un fichier XML que mes tests ont besoin de charger à exécuter. J'ai inclus ce fichier dans le projet de test, et le fichier est mis à "contenu" et "toujours copier vers le répertoire de sortie'. Ce fichier se copie le répertoire bin\debug amende.

Lorsque j'exécute les tests, toutefois, le fichier xml n'est pas là. Au lieu de regarder dans le projet du dossier bin\debug, il le cherche dans le test du répertoire de travail, C:\Projects\SAP Reapprovals\TestResults\name_machine 2010-12-06 13_45_43\Out". Le fichier n'a pas été copiés.

Est-il un moyen de forcer ce fichier à copier, ou dois-je obtenir la référence dans le test?

TIA!
James


Mise à jour
J'ai mis l' DeploymentItem d'attribut, mais le fichier n'est pas toujours exemplaire. Mais ce qui ressemble à ce que je veux... toutes les idées de pourquoi ça ne fonctionne pas?

Mon code de test:

[TestMethod]
[DeploymentItem("SAP - GS3 format.xml")]
public void TestProcessSapRoles() {

    //  I get a 'file not found' error here, and when 
    //  I check the output directory, it isn't there
    XElement rolesRoot = XElement.Load("SAP - GS3 format.xml");

}


RÉPONSES:
Merci à CPedros, avec son aide, j'ai zoomé sur un peu tout ça. J'ai couru SysInternals' Moniteur de Processus, pour voir où il était à la recherche de mon fichier xml. Voici ce que j'ai trouvé:

Quand j'ai couru les tests à l'aide de ctrl+r ctrl+t (déboguer les tests dans le contexte actuel), visual studio ignoré l' DeploymentItem attribut complètement et n'a même pas essayer de copier le fichier n'importe où. Dans ce cas, j'ai eu un "Fichier Non Trouvé" l'exception " quand j'ai essayé de l'ouvrir à la lecture. Visual studio a créé un dossier temporaire de travail pour les tests, mais il y avait un seul fichier, AgentRestart.dat.

Quand j'ai couru les tests à l'aide de la 'Exécuter des Tests Unitaires" dans ma barre d'outils (pas sûr de ce test option), Visual Studio n'a pas copier un fichier de plus de, mais de le référencer directement à partir du répertoire du projet. Le test passé, et aucun dossier temporaire de travail a été créé.

Quand j'ai couru le test à partir de l'option de menu "exécuter -> tests dans le contexte actuel" (exécuter, pas de débogage), un dossier temporaire de travail a été créé, et le fichier xml et de tous les exécutables ont été copiés. Le test réussi.

Lorsque j'ai édité Local.testsettings (en vertu d'une Solution d'Éléments de dossier dans mon dossier de tests), j'ai choisi 'Déploiement' dans le menu de gauche, et ajouté le fichier xml. Il a ajouté que [solution répertoire]\[répertoire du projet]\file.xml. J'ai enlevé l' DeploymentItem d'attribut. Maintenant, j'ai été en mesure de débogage, les tests; le fichier xml et de tous les exécutables ont été copiés dans le répertoire temporaire créé pour le test.

TLDR: Visual Studio, c'est ignorer l' DeploymentItem de l'attribut de certaines façons de l'exécution du test. La solution est d'éditer Local.testsettings, l' Deployment menu et ajouter le fichier à la main.

Merci pour l'aide! Je suis en train de donner CPedros de crédit pour sa réponse, comme il a été le plus utile dans la résolution de ce.

20voto

pero Points 7952

Essayez d'annoter votre test avec l'attribut DeploymentItem: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v=VS.100).aspx

Voici un extrait de code de la documentation:

   [TestClass]
    public class UnitTest1
    {
        [TestMethod()]
        [DeploymentItem("testFile1.txt")]
        public void ConstructorTest()
        {
            // Create the file to deploy
            Car.CarInfo();
            string file = "testFile1.txt";
            // Check if the created file exists in the deployment directory
            Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
                " did not get deployed");
        }
    }
 

0voto

poindexter12 Points 1095

Cherchez à utiliser cet attribut sur les tests nécessitant le fichier XML:

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute.aspx

0voto

bamie9l Points 570

Cela fait un moment que je me bats avec les problèmes de déploiement et je viens enfin d'abandonner. Au lieu de cela, je copie simplement manuellement mes fichiers dans un répertoire de test, puis je les supprime une fois l'opération terminée:

Emplacements du fichier de test:

 Private _locationOfTestFilesToBeCopied As String = "C:\...\TestFilesToBeCopied"
Private _locationOfTestFiles As String = "C:\...\TestFiles"
 

Méthode d'initialisation:

 <TestInitialize()>
Public Sub Setup()
    DeleteCopiedTestFiles()
    CopyTestFilesToTestDirectory()
End Sub
 

Méthodes de copie et de suppression:

 Private Sub CopyTestFilesToTestDirectory()
    Dim sourceDirectory As New DirectoryInfo(_locationOfTestFilesToBeCopied)

    For Each fileInfo As FileInfo In sourceDirectory.GetFiles
        fileInfo.CopyTo(_locationOfTestFiles & "\" & fileInfo.Name, True)
    Next

    sourceDirectory = Nothing
End Sub

Private Sub DeleteCopiedTestFiles()
    Dim sourceDirectory As New DirectoryInfo(_locationOfTestFiles)

    For Each fileInfo As FileInfo In sourceDirectory.GetFiles
        fileInfo.Delete()
    Next

    sourceDirectory = Nothing
End Sub
 

J'ai trouvé cela fonctionne bien

0voto

CSharp Points 463

J'ai été confronté à la question, un de mes fichier n'a pas été prise en coppied pour dossier de sortie, même si j'ai saisi que le nom de fichier en local.testSettings et définir la propriété comme "Copy".

Étapes suivantes a résolu mon problème:

  1. Ouvrir Le Menu Des Tests De
  2. Sélectionnez Paramètres De Test
  3. Sélectionnez l'option "Sélectionner les Paramètres de Test de fichier"
  4. Sélectionnez votre .testsettings fichier à partir d'Ouvrir le Fichier de Paramètres winndow
  5. Assurez-vous que Sélectionné .testsettings fichier est vérifié inder Test -> Paramètres de Test

Espérons que cela aidera quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X