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

时间:2012-01-05 18:15:51

标签: 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;
}

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

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\QTAgent32.exe

1 个答案:

答案 0 :(得分:13)

您可以设置变量以获取从

启动应用程序的路径
var execPath = AppDomain.CurrentDomain.BaseDirectory;