如何从单元测试方法访问数据文件?
How can I access a data file from a Unit test method?
这是我尝试访问文件的方式-
我在我的单元测试项目中添加了一个文件夹“TestData”
通过添加->现有项目添加了一个文件。设置构建操作=None,复制到输出目录=始终复制
在单元测试方法中访问文件如下-
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\")]
None 似乎有效。
生成的文件路径为
"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 文件夹,仍然没有用。
我使用 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");
重新启动 visual studio 使其工作。甚至关闭并重新打开解决方案都不够!!!
这是我尝试访问文件的方式-
我在我的单元测试项目中添加了一个文件夹“TestData”
通过添加->现有项目添加了一个文件。设置构建操作=None,复制到输出目录=始终复制
在单元测试方法中访问文件如下-
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\")]
None 似乎有效。
生成的文件路径为
"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 文件夹,仍然没有用。
我使用 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");
重新启动 visual studio 使其工作。甚至关闭并重新打开解决方案都不够!!!