如何获得"复制到输出目录"以使用单元测试?

Eri*_*ver 123 .net c# unit-testing mstest visual-studio-2008

当我在执行测试之前构建单元测试项目时,测试输出被复制到TestResults文件夹,然后执行测试.我遇到的问题是并非Debug/bin目录中的所有文件都被复制到TestResults项目中.

如何将复制到Debug/bin目录的文件也复制到TestResults文件夹?

Mar*_*ade 121

执行此操作的标准方法是在文件中指定部署项.testrunconfig,可以通过Visual Studio" 测试"菜单或" 解决方案项目"文件夹中的" 编辑测试运行配置"项进行访问.

  • 您可能必须关闭解决方案(甚至是Visual Studio)并在此更改生效之前重新打开 (18认同)
  • 在VS2010中,这是:Test/Edit Test Settings/local,然后在列表中选择"Deployment",选中"Enable ..."框并添加文件. (15认同)
  • 如果在代码中使用[DeploymentItem]属性,则无需在对话框中指定文件 - 请参阅下面的@ tomfanning的代码. (2认同)

小智 59

您可以指定部署属性,如下所示的示例; 此外,您还需要设置"内容"和"复制如果更新"属性(没有关于以后设置的文档,但您已设置这些以使其工作.

[TestMethod]
[DeploymentItem("mytestdata.xml")]
public void UploadTest()
{



}
Run Code Online (Sandbox Code Playgroud)

  • 你仍然需要启用它.正如Mercel在评论中写道,在VS2010中,这是:测试/编辑测试设置/本地,然后在列表中选择"部署",选中"启用..."框. (3认同)
  • 效果很好.我实际上认为这是更好的方法和答案,因为它在testmethod上方记录了所需的文件. (2认同)

tom*_*ing 10

我必须打开"启用部署",Test -> Edit Test Settings -> Local -> Deployment才能使[DeploymentItem]属性生效.


Gra*_*amF 5

根据您的需要,所有三个答案都是正确的.

添加要在.testrunco​​nfig中部署的文件(VS2010 中的.testsettings)会将所有这些文件复制到每个测试输出文件夹,即使是隔离运行的不相关测试也是如此.如果运行一个测试,则会将.testssettings部署部分中列出的所有测试数据文件复制到测试输出文件夹中.

在我的测试中,我需要将预期的XML文件复制到测试输出文件夹,以与实际的测试输出XML进行比较.我使用DeploymentItem属性仅复制与正在运行的测试相关的XML文件.在VS2010中,我必须在.testsettings文件中启用部署(但不添加任何路径),然后引用相对于DeploymentItem中的TestProject的XML文件路径.

希望这可以帮助.

  • 我的问题是这里提到的相对路径,我认为Xml应该在测试所在的目录中,但它需要在项目根目录中,或者以它所在的目录开头. (2认同)