我正在尝试获取单元测试中项目文件夹内文件的完整路径。我尝试使用:
在Java中
Directory.GetCurrentDirectory();
但是那会返回我的测试运行目录。我想要项目(或解决方案)的目录,而不必在其中硬编码。然后我可以附加文件名的最后一部分。类似于
System.getProperty("user.dir")
在Java中
Directory.GetCurrentDirectory();
但是那会返回我的测试运行目录。我想要项目(或解决方案)的目录,而不必在其中硬编码。然后我可以附加文件名的最后一部分。类似于
System.getProperty("user.dir")
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
使用此方法可获取正在运行的单元测试DLL本身的路径。
要访问项目子文件夹中的文件,最简单的方法是将相关文件标记为 Build Action = Content
和 Copy to Output Directory = Copy if newer
。如果这样做,它们就会在构建项目时被复制到运行程序集文件夹下的相对文件夹中。然后,您可以计算相对于运行程序集的物理路径。
例如:
<project root>\TestData\Data1.txt
。<project root>\bin\Debug\TestData\Data1.txt
。Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "TestData\Data1.txt")
。string filePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string folderPath = System.IO.Path.GetDirectoryName(filePath);
string Path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
getProperty("user.dir")
是什么意思,所以无法发表评论。在.NET中,当您的程序集正在执行时,直接推断源代码位置是物理上不可能的。机器上可能没有任何源代码,那么你怎么能得到它呢?获取所需文件的唯一方法是将它们从源代码复制到运行程序集的位置。这就是我的答案。 - Christian Hayter