使用AsConfigured仍然能够在TFS中获得UnitTest结果

Ste*_*DEV 9 tfs unit-testing mstest tfsbuild

因此,当我使用输出位置"AsConfigred"使用tfs构建控制器构建我的项目时,我遇到了一个问题,它不会检测我的单元测试.让我提一下我的设置.

TFS 2013 Update 2,默认流程模板

这是一些屏幕截图,可以帮助填写我不能打字的内容.我正在将我的构建复制到我们网络上的文件共享中,以便我们可以使用其他实用程序来使用输出.我不想使用"PerProject"或"SingleFolder",因为它们搞乱了我们配置的文件结构(这两个都将运行测试).所以我将文件复制到文件夹名称"SingleOutputFolder",它是DropLocation的子项.我希望能够从drop文件夹运行或从bin文件夹运行我的每个测试(我不关心哪个).但是它似乎没有检测到/运行任何测试.任何帮助将不胜感激.如果您需要任何其他信息,请与我们联系.

我尝试过使用***test*.dll,Install\SingleFolderOutput**.test.dll和$(TF_BUILD_DROPLOCATION)\ Install\SingleFolderOutput*test*.dll

但我不确定哪些变量可用,并了解其执行范围.

在此输入图像描述

在此输入图像描述

小智 9

鉴于您使用的构建输出位置设置为AsConfigured,您必须更改测试源规范设置的默认值,以允许构建在bin文件夹中查找测试库.这是一个例子.

如果单元测试库的完整路径是:

E:\Builds\7\<TFS Team Project>\<Build Definition>\src\<Unit Test Project>\bin\Release\*test*.dll
Run Code Online (Sandbox Code Playgroud)

使用

..\src\*UnitTest*\bin\*\*test*.dll;
Run Code Online (Sandbox Code Playgroud)

  • 这个`..\src\**\*test.dll`对我有用. (3认同)

Ste*_*DEV 1

我最终做的是添加一个构建后事件,将所有 test.dll 复制到特定构建中的暂存位置文件夹中,该文件夹基本上相当于 SingleFolder 构建中的位置,并在每个测试项目上执行此操作。

if "$(TeamBuildOutDir)" == "" (
echo "Building Interactively not in TFS"
) else (
echo "Building in TFS"
xcopy "$(TargetDir)*.*" "$(TeamBuildBinaries)\" /Y /E /S
)
Run Code Online (Sandbox Code Playgroud)

构建定义中的 MSBUILD 参数告诉它基本上放入 TFS 查找它们的文件夹中。

/p:TeamBuildBinaries="$(TF_BUILD_BINARIESDIRECTORY)"
Run Code Online (Sandbox Code Playgroud)

保留默认的测试程序集文件规范:

**\*test*.dll
Run Code Online (Sandbox Code Playgroud)

查看此链接以获取有关我使用的变量及其存在的相对路径的信息。