单元测试- c#测试资源

本文关键字:测试资源 单元测试 | 更新日期: 2023-09-27 17:49:27

我使用Microsoft Visual Studio测试框架,我的一些测试需要xml文件作为输入。目前,我把它们放在TestProject的资源目录下,通过"..'.."'whatever"路径名称。我想在使用测试资源文件时提供良好实践的建议,因为我想在所有这些情况下重用我的测试-直接来自VS 2010-在服务器上的构建过程中-在持续集成环境中

单元测试- c#测试资源

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

如果这是不可能的,我在测试项目中包含这样的文件,在一个名为TestData或类似的子文件夹中。然后我将"复制到输出目录"设置为"总是复制",这样文件就包含在输出中,并且位于与测试程序集相关的已知位置(无论构建是在Visual Studio内完成还是在构建服务器上完成)。只要测试中的代码不修改文件,而只需要它们读取数据,这就可以很好地工作。

我从下面的答案中建议这个方法。这是一个类似的问题。这种方法利用了DeploymentItem属性,在进行数据驱动单元测试时也会用到。

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

我们使用的是TFS2010。所有的输出文件放入Binaries文件夹。对于像XML这样的配置资源,我们使用Copy将输出目录选项设置为Copy always。因此,它将始终放置在输出目录中。

我将它包含在我的UnitTest项目文件中。

<ItemGroup>
    <Content Include="Resources'**" />
</ItemGroup>

然后我看到它包含在.'bin'Debug'net6.0-windows10.0.19041.0'UnitTest'目录后构建。最后,我使用huseyint的答案来获取我需要的文件。