【发布时间】:2015-01-23 13:39:55
【问题描述】:
这是我尝试访问文件的方式-
-
我在单元测试项目中添加了一个文件夹“TestData”
-
通过 Add->Existing Item 添加了一个文件。设置 Build Action=None, Copy To Output Directory= Copy Always
在单元测试方法中访问文件如下-
string fileName = System.IO.Path.Combine(
System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location), "TestData\\TestExcel2007File1.xlsx");
XmlDocument actual;
actual.Load(fileName); //Throws exception saying cannot find part of the file path
我也尝试过使用 Method 属性——
[TestMethod, DeploymentItem(@"Test Data\", @"Test Data\")]
似乎都不起作用。
生成的文件路径是
"D:\\MyProject\\TestResults\\MACHINE_NAME 2015-01-23 05_21_45\\Out\\TestData\\TestExcel2007File1.xlsx"
并且 Out 文件夹没有 TestData 文件夹或 Excel 文件。
编辑:我引用的程序集存在于 Out 文件夹中。我正在使用 Visual Studio 2010。
我在 Visual Studio 2012 的另一个项目中执行了相同的步骤,并且似乎找到了文件并按预期工作。
EDIT 2:我发现TestData文件夹被复制到bin\debug文件夹中,而不是生成的路径中。但是引用的程序集是在生成的路径中复制的!
编辑 3:添加了一个 testsetting 文件并检查了 Enable Deployment Menu,在 Additional Files and directory to deploy 列表中添加了 TestData 文件夹,仍然没有工作。
【问题讨论】:
-
请注意:单元测试不应触及任何外部资源(文件、数据库等)。如果您需要在单元测试中测试某些功能,则需要将它们模拟出来。
标签: c# visual-studio-2010 unit-testing