Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#测试资源_C#_Unit Testing - Fatal编程技术网

C#测试资源

C#测试资源,c#,unit-testing,C#,Unit Testing,我正在使用Microsoft Visual Studio测试框架,我的一些测试需要一个xml文件作为输入。 目前,我已经将它们放在我的TestProject中的一个资源目录下,并通过“.\..\where”路径名访问它们。我想要一个关于使用测试资源文件时的良好实践的建议,因为我想在所有这些情况下重用我的测试 -直接从VS 2010开始 -在服务器上的构建过程中 -在持续集成环境中 以透明(简单)的方式。我在一次集成测试中做了类似的事情;我用和你一样的方法解决了这个问题。只要您的文件已签入源代码管

我正在使用Microsoft Visual Studio测试框架,我的一些测试需要一个xml文件作为输入。 目前,我已经将它们放在我的TestProject中的一个资源目录下,并通过“.\..\where”路径名访问它们。我想要一个关于使用测试资源文件时的良好实践的建议,因为我想在所有这些情况下重用我的测试 -直接从VS 2010开始 -在服务器上的构建过程中 -在持续集成环境中
以透明(简单)的方式。

我在一次集成测试中做了类似的事情;我用和你一样的方法解决了这个问题。只要您的文件已签入源代码管理,并且您使用了一个相对路径(看起来是这样),它就应该按预期工作

首先,我通常会在测试过程中尽量减少对文件系统的依赖(通过为文件系统引入某种抽象,以便模拟文件系统访问)


如果不可能,我会将这些文件包括在测试项目中,放在名为
TestData
或类似的子文件夹中。然后我将“Copy to Output Directory”设置为“Always Copy”,以便文件包含在输出中,并且位于与测试程序集相关的已知位置(无论构建是在Visual Studio内部还是在构建服务器上完成)。只要测试中没有代码在修改文件,而只需要读取数据,这种方法就可以很好地工作。

我们将TFS2010用于CI。将所有输出文件放入Binaries文件夹。对于类似XML的配置资源,我们使用Copy to output directory选项作为Copy always。因此,它将始终放在输出目录中。

我建议采用以下方法。这是一个类似的问题。
这种方法利用了
DeploymentItem
属性,在进行数据驱动单元测试时也会使用该属性。

在哪里设置“复制到输出目录”以始终复制?在每个文件上,或者你可以在一个目录中全局设置它?@Terenzio:我想你需要在单个文件上设置它。我认为您可以通过在解决方案资源管理器中选择一系列文件(现在无法检查:现在没有Visual Studio)一次性完成此操作。VS2010:还可以将生成操作文件属性设置为“无”。