Reputation: 6463
I am trying to get the full path of a file in my unit test which is in a folder in my project. i tried using
Directory.GetCurrentDirectory();
but that returns the directory which my tests are running in. I want the directory of the project (or solution) without having to hard-code it in there. Then I can append the last part of the filename. Something similar to
System.getProperty("user.dir")
in java
Upvotes: 3
Views: 6242
Reputation: 1
string Path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
Upvotes: 0
Reputation: 31071
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
will get you the path of the running unit test DLL itself.
In order to access a file in a project subfolder, the simplest thing to do is mark the relevant files as Build Action = Content
and Copy to Output Directory = Copy if newer
. If you do that, then they will be copied to relative folders underneath the running assembly folder whenever you build the project. You can then calculate the physical path relative to the running assembly.
For example:
<project root>\TestData\Data1.txt
.<project root>\bin\Debug\TestData\Data1.txt
.Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "TestData\Data1.txt")
.Upvotes: 2
Reputation: 29041
string filePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string folderPath = System.IO.Path.GetDirectoryName(filePath);
Also, it's best to tag your c# posts with win-forms, WPF or asp-net so that we can tell what platform you're working on.
Upvotes: 1