简体   繁体   中英

How to set the working directory for MS Test projects

how can I set the working directory for MS Tests projects, like I can do it for normal application projects? My Component that is tested need to access some config files that are also used by other applications. So far I have to copy these files the bin/debug folder of my test project, as these files are expected to be in the working directory.

Is it possible to set a working directory for test projects?

For those who use Visual Studio 2012, if you set the output directory of the test project under Properties|Build|OutputPath then that will become the working directory when you run the tests from Visual Studio (since it is using Vstest.console.exe). If you don't want to have your test dlls, etc output to the same directory as your other files and you don't want to have the other files as content in your test project (as suggested by Schaliasos) then you can set the path on startup in a method that has the [AssemblyInitialize] attribute. You do this by assigning System.Environment.CurrentDirectory as usual. You will probably want to have the working directory as a setting or read from a configuration file.

Edit

As pointed out by Rohit.Net, when you choose Run All Tests the default path would be under TestResults. The same applies when using a runsettings file. The output folder will be the default working directory when you are not using DeploymentItems and: -

  • You right click the test(s) in Visual Studio and choose to run / debug, or
  • You run from the command line using vstest.console.exe.

The working directory for test projects is created at the time you start running your tests.

If you run them locally this is created in a folder TestResults inside your project folder. If you run them in remote machines a different folder is created in each test agent in the following path:

C:\\Users{userRunsTheTest}\\AppData\\Local\\VSEQT\\QTAgent\\{GuidForThisRun}

In order your files to be deployed in these folder and have access to them you have to:

  1. Set the Copy to Output Directory = Copy Always
  2. In the test that needs these files set them as DeploymentItems .

Acarlon's suggestion does not work when you select Run All tests from Test Explorer in Visual Studio 2012.

The default path you would get is something like ...\\TestResults\\Deploy_<YourName>2014-01-13 14_48_20\\Out folder.

Because of this there may be possibility that your DB would not be accessible when entity would try to open connection for running entity related Test.

In my case I am using SQL CE which is set as resource file and always compiled and gets itself dropped into the Bin/Debug/Resource folder.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM