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

本文关键字:相对 路径 项目 单元测试 | 更新日期: 2023-09-27 18:21:10

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

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的路径?

提前感谢!

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

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

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

查看以下步骤。

  1. 如果需要放在产品项目的file.xml中,请制作一个文件夹(例如数据文件夹)
  2. file.xml放入文件夹中
  3. 转到file.xml的VS属性窗口
  4. 生成操作设置为,将Copy to Output Directory复制到输出目录设为CopyAlways如果更新则复制
  5. 作为构建并执行单元测试

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

    在这种情况下,VS将自动在测试项目的输出文件夹下创建带有file.xml的数据文件夹。

您可以像下面这样引用文件夹。

"..'..'TargetFolder'file.xml"

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

"..'..'..'TestFileFolder'myFile.xml"

MS单元测试最简单的方法是在单元测试类的测试中使用[DeploymentItem]。看见http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v=vs.100).aspx获取更多详细信息。此外,我如何在VS2008单元测试中使用数据文件?

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

奖励提示:使用Assert.IsTrue(actual);