有[SetUp]
部分,其中加载一些文件以供以后测试。
它应该加载:
private string GiveFilePath()
{
string folder;
string assemblyPath;
assemblyPath = Assembly.GetExecutingAssembly().Location;
folder = new FileInfo(assemblyPath ).DirectoryName;
return folder + @"\" + FileNameAsConst;
}
但我明白了
System.IO.FileNotFoundException
位于 C:\Users\username\AppData\Local\Temp\...
因为它尝试从 AppData
而不是从项目文件夹加载此文件。
有类似的question已经问过了。问题的作者发现自己的答案是将 ShadowCopyFiles
属性设置为 true
。
但是代码或配置文件中没有任何 ShadowCopyFiles
。
你有什么想法吗?
更新:
[SetUp]
public void SetUp()
{
this.facade = new MyFacade();
}
[Test]
public void InstanceIsNotNull()
{
Assert.IsNotNull(facade);
}
...
public MyFacade()
{
FileStream fileStrem = new FileStream(GiveFilePath(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
...
}
最佳答案
您应该了解测试运行的上下文以及您提供的代码的上下文,无论执行的程序集是实际测试还是要加载到单独(或相同)AppDomain 中的外部程序集等。
大多数时候,如果您没有做任何特殊的事情,并且您尝试加载的文件位于与执行程序集。您可以轻松地使用 System.IO 命名空间中的类来管理此文件,这比任何反射操作都便宜。您甚至不需要指定整个绝对路径,相对路径就足够了。如果该文件包含在您的项目中,请确保将“复制到输出目录”设置为“始终复制”,并确保“构建操作”设置为“内容”,然后在运行时,首先确保文件存在...
if(File.Exists("filename.ext"))
请注意,路径是相对的,然后对文件执行任何您想要的操作...
File.ReadAllText("filename.ext");
File.Delete("filename.ext");
关于c# - 单元测试开始后出现 FileNotFoundException。尝试在 AppData 下搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25153478/