12

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

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

提前致谢!

4

5 回答 5

11

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

为了解决您的路径问题,我认为最好的方法是使用Copy to Output Directory属性作为Copy alwaysCopy if newer,您可以在 VS Properties 窗口中找到它。

查看以下步骤。

  1. 如果需要,创建一个文件夹以放入file.xml产品项目中(例如 Data 文件夹)。
  2. 放入file.xml文件夹。
  3. 转到 VS 属性窗口file.xml
  4. Build Action设置为None并将Copy to Output Directory设置为Copy alwaysCopy if newer
  5. 构建并进行单元测试

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

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

于 2013-07-05T06:21:50.847 回答
6

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

"..\..\TargetFolder\file.xml"
于 2013-07-05T04:22:39.757 回答
3

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

"..\..\..\TestFileFolder\myFile.xml"
于 2013-07-05T07:01:52.127 回答
2

最简单的方法是 MS 单元测试是[DeploymentItem]在单元测试类的测试中使用。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v=vs.100).aspx 。另外,如何在 VS 2008 单元测试中使用数据文件?

于 2013-07-07T20:42:15.427 回答
0

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

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

于 2013-07-05T04:07:59.797 回答