我的主项目中有一个内容文件位于〜/ 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));
}
答案 0 :(得分:2)
正如评论所提到的:这些测试并不属于我所说的单元测试项目的代码。但是在msbuild中实现起来相当容易。在项目中放置这样的目标,确定输出目录是什么:
<Target Name="BbqExeExists" BeforeTargets="Build">
<Error Condition="!Exists('$(TargetDir)/foo/FOO32.EXE')" Text="FRequired file missing"/>
</Target>
由于BeforeTargets
属性,它将在构建的其余部分之前运行。我还使用TargetDir
这是构建的可执行文件通常会使用的那个,但是如果它是你需要的那个,你的问题并不是很清楚。