views:

1784

answers:

4

Here is the problem:
1. Create a TestProject in your Visual Studio solution.
2. Open the .testrunconfig file and under the 'deployment' menu item, select the 'Enable Deployment' checkbox.
3. Now click on 'Add Directory...' button and add a folder which has some files in it.
4. Run the test project (use a dummy test).

Ok, now go check the TestResults folder: You will see that all the files got directly copied (to the top level)- the folder itself is not copied (with the files under them). This messes up my paths during testing. Can anybody tell how to get the folder copied instead of just the files underneath ?

Thanks.

+6  A: 

Use the [DeploymentItem] attribute on the test classes that use it. You can specify a directory:

[TestClass]
[DeploymentItem("blahblah\\myDirectory", "myDirectory")]
public class MyTest
{

}

Note:

  • DeploymentItem is very slow when starting the tests. It seems to copy 2 files per second.
  • You can specify the attribute on a test base class. But it does not always work if you have more than one test project.
  • You can probably specify it on a TestClass that has a method marked with [AssemblyInitialize]. Then you have only to provide it once. Not sure, you have to try.
  • The source directory is relative to the solution location. This is hardly documented.
Stefan Steinegger
Hmm. This requires hardcoding within the test fixture class rather than the .testrunconfig file. I decided to set 'Enable Deployment' unchecked and am doing everything within the bin\Debug folder where I have all data files set to 'Copy Always'. Does the job.Thanks for the information though !
DeeStackOverflow
It's straight forward to turn off "deployment". But you should consider the risk having files in bin\debug from older builds. Your tests could only run/fail on your machine. So clean up bin\debug before running tests every now and then.
Stefan Steinegger
this post just saved me. thanks!
Jeremiah
A: 

The other option you have is to create another folder beneath the original folder, and then that folder will be deployed to the out directory. For example you can have this structure:

TestFolder/

TestFolder/TestDeployment/

And then in the testrunconfig you still select the TestFolder folder and the TestDeployment folder will be deployed to the out directory.

Jordan Soet
A: 

Open the .testsettings file in notepad. Now, you should see that for every folder to copy

Change this to

Jaikishan Jalan
A: 

Repeating as the answer didnot render properly

Open the .testsettings file in notepad. Now, you should see that for every folder to copy

<DeploymentItem filename="FolderName\" />

Change this to

<DeploymentItem filename="FolderName\" outputDirectory="FolderName\"  />
Jaikishan Jalan