这是我尝试访问文件的方式-
我在我的单元测试项目中添加了一个文件夹“TestData”
通过添加->现有项目添加了一个文件。设置 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 中的另一个项目中执行了相同的步骤,似乎找到了文件并按预期工作。
编辑 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");
关于c# - 如何从单元测试方法访问数据文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28111201/