web-dev-qa-db-fra.com

DeploymentItem ne déploie pas de fichiers

J'utilise MS unit testing framework pour tester ma bibliothèque C #. Je dois ouvrir un fichier que je déploie à l'aide de DeploymentItem attribute. Mais il ne déploie pas de fichier dans le répertoire de déploiement de test.

Dans mon projet de test unitaire, j'ai créé un dossier TestFile. Dans ce dossier, il y a plusieurs fichiers, disons a.txt, b.txt.

Maintenant, dans ma classe de tests unitaires, j'ai ajouté l'attribut DeploymentItem. Mais le fichier n'est pas copié. 

Voici mon code.

[TestClass]
[DeploymentItem("TestFile")]
public class CustomLibraryTest
{
    public TestContext TestContext { get; set; }

    [TestMethod]
    [DeploymentItem(@"TestFiles\a.txt")]  // THis should deploy a.txt to test deployment directory
    {
        var path = TestContext.TestDeploymentDir + "a.txt";
        // Now when I debug this unit-test, and open path in Explorer,
        // a.txt is not present in "TestResults\Deploy_fhafeez 2013-05-28 13_02_37\Out" folder
    }
}

Qu'est ce que je fais mal?

16
fhnaseer

J'ai trouvé deux solutions possibles dans ce fil de discussion :

  1. Définissez la propriété "Copier dans le dossier de sortie" de vos fichiers de déploiement sur "Copier toujours" (voir Problèmes liés à l'attribut DeploymentItem ).
  2. Vérifiez le paramètre "Activer le déploiement" dans le fichier Local.testsettings (voir Problèmes liés à l'attribut DeploymentItem ).

J'espère que cela t'aides.

17
Erik Schierboom

D'après ce que j'ai remarqué avec VS 2015, le chemin que vous spécifiez dans l'attribut d'élément de déploiement doit être relatif aux références futures par rapport à la sortie de la construction (dossier de débogage). Si votre structure de dossier est "UnitTesting\TestData\Test.xml", DeploymentItem doit être DeploymentItem ("..\..\TestData\Test.xml") Dans ce cas, le dossier TestData ne doit pas être inclus. dans le projet UnitTesting.

6
Ravi C

J'avais un ensemble de tests où la copie fonctionnait pour certains tests mais pas pour les derniers, même si l'attribut DeploymentItem était défini exactement de la même manière. Après avoir épuisé tout le reste, j'ai fait une "solution propre" sur la solution et recommencez et la copie a commencé correctement. YMMV

0
Kevin McDowell