Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DeploymentItem not deploying files

I am using MS unit testing framework for testing my C# library. I have to open a file which I'm deploying using DeploymentItem attribute. But it is not deploying file to the Test deployment directory.

In my Unit-test project, I created a folder TestFile in this folder there are multiple files, lets say a.txt, b.txt.

Now in my Unit-test class I added DeploymentItem attribute. But file is not being copied.

Here is my 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
    }
}

What I am doing wrong?

like image 435
fhnaseer Avatar asked May 28 '13 08:05

fhnaseer


3 Answers

I have found two possible solutions in this thread:

  1. Set the "Copy To Output Folder" property of your deployment files to "Copy Always" (see Problems with DeploymentItem attribute)
  2. Check the "Enable Deployment" setting in the Local.testsettings file (see Problems with DeploymentItem attribute)

Hope this helps.

like image 100
Erik Schierboom Avatar answered Nov 13 '22 05:11

Erik Schierboom


For future references, from what I have noticed using VS 2015 - the path you specify in the deployment item attribute must be relative to the build output (debug folder). If your folder structure is "UnitTesting\TestData\Test.xml" the DeploymentItem must be DeploymentItem("..\..\TestData\Test.xml") In this case, the TestData folder need not be included in the UnitTesting project.

like image 36
Ravi C Avatar answered Nov 13 '22 05:11

Ravi C


I had a set of tests where the copy was working for some tests but not the latest, even though the DeploymentItem attribute was set exactly the same way. After exhausting everything else, I did a "Clean solution" on the solution and reran and it started copying correctly. YMMV

like image 2
Kevin McDowell Avatar answered Nov 13 '22 05:11

Kevin McDowell