2012-01-05 124 views
9

我有一个单元测试项目与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; 
} 

主要问题:运行时,内部或外部的IDE的程序,但运行单元测试时Application.ExecutablePath工作得很好,它把我送到Visual Studio中的一个目录,特别是在这个目录:

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

推出的路径你拿的文件在干什么? – 2012-01-05 18:32:24

+0

如果你有代码已经写好了,也许粘贴代码将是一个好主意,并在该代码中发表评论,如果您遇到问题,并且您想要执行代码中的哪个位置或添加一些附加功能... – MethodMan 2012-01-05 18:33:52

回答

13

,你可以设置一个变量,以获得其中应用程序正在从

var execPath = AppDomain.CurrentDomain.BaseDirectory; 
+0

这让我到正确的文件夹路径。另外,我需要将我的配置文件包含在部署中(测试 - >编辑测试设置 - > local.test,单击部署,然后添加有问题的文件。这会将外部文件添加到测试用例结果文件夹,Visual Studio在运行单元测试时使用 – ford 2012-01-05 19:07:11

+0

您是否考虑过调查资源文件的使用 – MethodMan 2012-01-05 19:09:25

+0

我在其他地方使用过资源文件,但在这种情况下它并不合适 – ford 2012-01-06 22:46:44

相关问题