How to get build directory of a test project?

c#, visual-studio

Solution

Use the DeploymentItemAttribute attribute. To quote MSDN:

This attribute identifies files and directories that contain files that are used by the deployed test to run. The test engine makes a copy of the deployment items and places them in test deployment directory based upon the OutputDirectory specified or the default directory.

For example:

[TestClass]
public class MyUnitTest
{
    [TestMethod()]
    [DeploymentItem("myfile.txt")]
    public void MyTestMethod()
    {          
        string file = "myfile.txt";           
        Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
            " did not get deployed");
    }
}

Of course assuming you are using MSTest as your testing framework.

Problem

I have a test project in which I needs to load an XLSX file. For that, I added a file with copy-always so that it ends up in the build directory, but all of the following return a wrong path: - `System.Reflection.Assembly.GetAssembly(typeof(testclass)).Location;` - `AppDomain.CurrentDomain.BaseDirectory` - `Directory.GetCurrentDirectory();` They all give me: `"C:\\Users\\username\\Documents\\visual-studio-projecten\\projectname\\TestResults\\username_ICT003 2012-06-20 12_07_06\\Out"` and I need `"C:\\Users\\username\\Documents\\visual-studio-projecten\\projectname\\TestProject\\bin\\Debug\\SupportFiles\\"` How do I accomplish that?

Original source

Related problems