【发布时间】:2015-07-17 20:03:23
【问题描述】:
我的主项目中有一个位于 ~/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));
}
【问题讨论】:
-
你不能只将文件包含到项目中并构建操作:无,复制到输出:总是吗?在单元测试中测试文件是否存在通常很痛苦,并且还取决于您的测试运行者...
-
@AlexeiLevenkov 问题是我们的开发人员有时会从存储库中删除文件,因此它会被删除(构建过程的第一步是与存储库同步)。如果文件不存在,将文件设置为复制到输出总是无济于事。我想给删除文件的开发者发一个不注意的讨厌图,并确定构建是无效的。
-
可能是预构建事件而不是单元测试? dillieodigital.wordpress.com/2012/11/27/…
-
@JeremyHolovacs 但构建应该会因丢失文件而失败...应该比测试失败更明显...
标签: c# unit-testing build path msbuild