构建测试:检查文件是否存在于其他项目中

本文关键字:其他 项目 于其他 存在 测试 检查 文件 是否 构建 | 更新日期: 2023-09-27 18:03:28

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

我决定做一个基本的测试项目,以确保文件在需要的地方。测试项目将作为构建的一部分在我们的竹服务器上运行。

我想在我的测试项目中测试该文件是否存在,但路径可能会根据构建配置动态更改(我们构建32位版本和Any 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));
}

构建测试:检查文件是否存在于其他项目中

正如注释所提到的:我想说,这样的测试实际上不属于单元测试项目的代码。然而,在msbuild本身中实现它相当容易。在项目中设置一个这样的目标,它决定你的输出目录是什么:

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

由于BeforeTargets属性,它将在构建的其余部分之前运行。我还使用了TargetDir,这是构建可执行文件通常去的地方,虽然从你的问题中并不是很清楚,如果它是你需要的。