如何从测试项目中获取项目路径?

for*_*ord 10 c# unit-testing

我在与Visual Studio中的项目相同的解决方案中设置了一个单元测试项目.单元测试是通过Visual Studio中内置的单元测试工具完成的(包含在Premium及以上版本中).我需要在测试项目中运行单元测试时加载项目本身路径中的文件,而不是测试项目.

要包含的文件是主项目的一部分,并具有以下属性:

  • 构建行动:内容
  • 复制到输出目录:始终

我需要为依赖于该文件的函数编写单元测试,否则我将遇到错误状态,并且无法在该函数上编写100%覆盖率的测试.

如何从单元测试项目中获取实际项目的执行路径?

编辑:特定功能读取配置文件中的所有行,并在列表中一次存储一行.示例代码如下:

public List<string> LoadConfigFile() {
    List<string> models = new List<string>();
    StreamReader sr = new StreamReader(Path.GetDirectoryName(Application.ExecutablePath) + @"\" + Properties.Resources.SupportedModelsConfigFile);

    while ((line = sr.ReadLine()) != null)
    {
        models.Add(line);
    }

    sr.Close();
    return models;
}
Run Code Online (Sandbox Code Playgroud)

主要问题:Application.ExecutablePath在IDE内部或外部运行程序时工作正常,但在运行单元测试时,它会将我发送到visual studio中的目录,特别是此目录:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\QTAgent32.exe
Run Code Online (Sandbox Code Playgroud)

Met*_*Man 13

您可以设置一个变量来获取启动应用程序的路径

var execPath = AppDomain.CurrentDomain.BaseDirectory;
Run Code Online (Sandbox Code Playgroud)