Visual Studio Test Project - Does not copy folder

2020-03-09 07:10发布

问题:

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.

回答1:

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.


回答2:

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\" /> 


回答3:

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.



回答4:

I just had this problem too today. I solved it by adding a folder called "deployment_files" in the project that contained the required folder. Then I put the required folder into the "deployment_files" folder. THEN, I opened the LocalTestRun.testrunconfig file under the "Solution Items" folder in the Solution Explorer. Went to the "Deployment" panel in the testrunconfig property window. Added the "deployment_files" directory to the deployment and voila. The folder within that was copied to the test results Out folder.