以下是我尝试访问该文件的方法 -
我在单元测试项目中添加了一个文件夹“TestData”
通过Add->现有项添加了一个文件。设置构建操作=无,复制到输出目录=始终复制
使用单元测试方法访问文件,如下所示 -
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中的不同项目中执行了相同的步骤,并且似乎找到了该文件并按预期工作。
编辑2 :我发现TestData文件夹已复制到 bin \ debug 文件夹中,而不是在生成的路径中。但引用的程序集将复制到生成的路径中!
编辑3 :添加了一个测试设置文件,并选中了启用部署菜单,在附加文件和目录中添加了TestData文件夹以进行部署,但仍然无法正常工作。
答案 0 :(得分:2)
我使用xUnit并以这种方式工作:
public static string GetImportPath()
{
string[] importPaths =
{
@"TestData", @"..\TestData", @"..\..\TestData",
};
string importPath = importPaths.FirstOrDefault(Directory.Exists);
Guard.NotNull(importPath, "importPath not found");
return importPath;
}
我的项目文件夹中有TestData
文件夹,与bin
,Properties
等级相同。
在您的情况下,您可以像这样使用它:
string fileName = Path.Combine(GetImportPath(), "TestExcel2007File1.xlsx");
答案 1 :(得分:1)
重新启动visual studio使其正常工作。甚至没有关闭并重新打开解决方案就足够了!!!