构建测试:检查文件是否存在于另一个项目中
build tests: check if file exists in another project
我的主项目中有一个位于 ~/bin/foo/FOO32.EXE 的内容文件,有时会从源代码管理中删除(人们正在搞乱 .gitignore);这每次都会破坏我们的构建。
我决定制作一个基本的测试项目,以确保文件位于需要的位置。作为构建的一部分,测试项目将 运行 在我们的 bamboo 服务器中。
我想在我的测试项目中测试该文件是否存在,但路径可能会根据构建配置动态更改(我们构建了一个 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));
}
正如评论中提到的那样:此类测试实际上不属于我要说的单元测试项目的代码。然而,在 msbuild 本身中实现起来相当容易。在确定输出目录的项目中放置这样的目标:
<Target Name="BbqExeExists" BeforeTargets="Build">
<Error Condition="!Exists('$(TargetDir)/foo/FOO32.EXE')" Text="FRequired file missing"/>
</Target>
由于 BeforeTargets
属性,它将 运行 在构建的其余部分之前。我还使用了 TargetDir
,这是构建的可执行文件通常所在的位置,尽管从你的问题中并不清楚它是否是你需要的。
我的主项目中有一个位于 ~/bin/foo/FOO32.EXE 的内容文件,有时会从源代码管理中删除(人们正在搞乱 .gitignore);这每次都会破坏我们的构建。
我决定制作一个基本的测试项目,以确保文件位于需要的位置。作为构建的一部分,测试项目将 运行 在我们的 bamboo 服务器中。
我想在我的测试项目中测试该文件是否存在,但路径可能会根据构建配置动态更改(我们构建了一个 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));
}
正如评论中提到的那样:此类测试实际上不属于我要说的单元测试项目的代码。然而,在 msbuild 本身中实现起来相当容易。在确定输出目录的项目中放置这样的目标:
<Target Name="BbqExeExists" BeforeTargets="Build">
<Error Condition="!Exists('$(TargetDir)/foo/FOO32.EXE')" Text="FRequired file missing"/>
</Target>
由于 BeforeTargets
属性,它将 运行 在构建的其余部分之前。我还使用了 TargetDir
,这是构建的可执行文件通常所在的位置,尽管从你的问题中并不清楚它是否是你需要的。