构建测试:检查另一个项目中是否存在文件

时间:2015-07-17 20:03:23

标签: c# unit-testing build path msbuild

我的主项目中有一个内容文件位于〜/ bin / foo / FOO32.EXE,有时会从源代码控制中退出(人们正在弄乱.gitignore);这每次都打破了我们的构建。

我决定制作一个基本的测试项目,以确保文件所在的位置。测试项目将作为构建的一部分在我们的竹子服务器中运行。

我想在我的测试项目中测试该文件是否存在,但路径可以根据构建配置更改动态(我们构建一个32位版本和任何CPU版本,这意味着bin目录可以改变一点)

作为单元测试的一部分,如何验证我的构建项目中是否存在该文件?我希望它是这样的:

[TestMethod]
public void BbqExeExists()
{
    var basePath = ??? some expression that gets the main project's app directory
    var basefilePath = @"foo/FOO32.EXE";
    var fullPath = Path.Combine(basePath, basefilePath);

    Assert.IsTrue(File.Exists(fullPath));
}

1 个答案:

答案 0 :(得分:2)

正如评论所提到的:这些测试并不属于我所说的单元测试项目的代码。但是在msbuild中实现起来相当容易。在项目中放置这样的目标,确定输出目录是什么:

<Target Name="BbqExeExists" BeforeTargets="Build">
  <Error Condition="!Exists('$(TargetDir)/foo/FOO32.EXE')" Text="FRequired file missing"/>
</Target>

由于BeforeTargets属性,它将在构建的其余部分之前运行。我还使用TargetDir这是构建的可执行文件通常会使用的那个,但是如果它是你需要的那个,你的问题并不是很清楚。