单元测试项目的相对路径c#

时间:2013-07-05 03:04:18

标签: c# unit-testing tfs

我有一个具有控制台应用程序和单元测试的解决方案。

var target = new Validator();
var targetFile = @"C:\Folder\SubFolder\AnotherSubFolder\Development\DEV\src\UnitTest\TargetFolder\file.xml";

bool actual = target.Validate(targetFile);
Assert.AreEqual(true, actual);

Validator位于控制台应用程序项目中,而我的file.xml位于单元测试项目内的文件夹中。

这个单元测试正在通过,但是我想确保当我将其签入到我的tfs或构建服务器时,它仍然可以找到我的targetFile。

我将如何改变targetFile的路径?

提前致谢!

5 个答案:

答案 0 :(得分:7)

如果我正确理解了您的问题,那么产品代码(在控制台应用程序中)依赖于测试项目中的项目是不好的,因此我建议您将file.xml移动到产品代码项目。

要解决您的路径问题,我认为最好的方法是将复制到输出目录属性用作始终复制复制如果更新 >,您可以在VS Properties窗口中找到它。

请查看以下步骤。

  1. 如果需要在产品项目中放入file.xml,请创建一个文件夹(例如,数据文件夹)。
  2. file.xml放入文件夹。
  3. 转到file.xml的VS Properties窗口。
  4. 构建操作设置为,将复制到输出目录设置为始终复制复制if较新的
  5. 构建并进行单元测试

    Assert.IsTrue(File.Exists(@"Data\file.xml"));
    

    在这种情况下,VS会自动在test poject的输出文件夹下使用file.xml创建数据文件夹。

答案 1 :(得分:5)

您可以参考下面的文件夹。

"..\..\TargetFolder\file.xml"

答案 2 :(得分:3)

我找到了解决问题的方法。我用过这个:

"..\..\..\TestFileFolder\myFile.xml"

答案 3 :(得分:2)

最简单的方法是MS单元测试是在单元测试类的测试中使用[DeploymentItem]。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v=vs.100).aspx。另外How can I use a data file in a VS 2008 unit test?

答案 4 :(得分:0)

Validator的位置不应该相关。任何相对路径都应该相对于您的测试应用程序正在执行的目录,因此只需将targetFile设置为相对路径。 然后确保您在开发服务器上与开发机器上相同的相对位置运行测试。

额外提示:使用Assert.IsTrue(actual);