使用TFS 2008将单元测试作为CI的一部分运行时,MsTest失败

时间:2011-03-12 17:32:35

标签: visual-studio visual-studio-2010 tfs

我的配置:

  • VS2010解决方案
  • TFS 2008
  • 构建服务器 - TFS 2008
    • 构建服务器还安装了VS2008 Team Suite和VS2010终极版

TFS 2008正确构建我的VS2010解决方案。但是,当运行单元测试时,我得到以下MsTest错误。

  

使用“TestToolsTask”任务   程序集“D:\ Program Files \ Microsoft   视觉工作室   9.0 \ Common7 \ IDE \ PrivateAssemblies \ Microsoft.VisualStudio.QualityTools.MSBuildTasks.dll”。   任务“ TestToolsTask ”命令:
  d:\ Program Files \ Microsoft Visual   Studio 10.0 \ Common7 \ IDE \ MSTest.exe   / NOLOGO   / searchpathroot: “d:\构建\ APP \源\ 86个\二进制文件”   / resultsfileroot: “d:\构建\ APP \源\ 86个\ TestResults”   /testcontainer:"D:\Builds\App\Source\86\Binaries\\Tests.dll”   /发布: “HTTP:// tfsServer:8080 /”   / publishbuild: “vstfs:///构建/编译/ 26029”   / teamproject:“提案”   “TestToolsTask”任务正在使用   “d:\ Program”中的“MSTest.exe”   Files \ Microsoft Visual Studio   10.0 \ Common7 \ IDE \ MSTest.exe“。 没有为发布指定平台   操作。对于切换语法,请键入   “MSTest /帮助”    MSBUILD:警告MSB6006:“MSTest.exe”退出,代码为1。   [d:\构建\ APP \源\ 86 \ BuildType \ TFSBuild.proj]   先前的错误已转换为a   警告,因为任务被调用   使用ContinueOnError = true。建立   继续,因为“ContinueOnError”   在“TestToolsTask”任务设置为   “真正”。完成执行任务   “TestToolsTask” - 失败。

我不确定导致MsTest失败的原因。

尝试的事情: - 提供对构建文件夹的写访问权限,以便在构建计算机上构建源的服务帐户

2 个答案:

答案 0 :(得分:2)

您可以在TFS2008的MSBuild中执行VS2010构建,但看起来好像是使用Visual Studio 9.0 TestToolsTask(2008)来尝试运行Visual Studio 10.0(2010)测试项目(MSTest.exe)。我尝试调整MSBuild从“Microsoft Visual Studio 10.0”文件夹而不是“9.0”运行TestToolsTask,以便整个过程使用相同版本的工具。您可以覆盖tfsbuild.proj文件的属性中的工具路径,以确保使用正确版本的Visual Studio构建 - 类似的东西可能适用于测试工具。

或者,它正在运行VS2010测试工具,但仍尝试使用特定于2008的命令行 - 检查设置并查看是否可以调整命令行(您可能需要覆盖MS目标文件,正在运行构建,如果它是2008版本)。例如,在TFS 2010中,许多命令行从使用简单的“服务器:MyServer”变为类似“集合:http:// MyServer:8080 / tfs / MyCollection”。因此,您可能必须更改命令行才能与现在运行的2010版本工具完全兼容,即使它最终仍然指向2008服务器。

我的第三个建议(不一定非常有用)是升级到TFS2010 - 它通常是一个无痛的安装,比2008年好得多,并且将消除使用混合2008/2010设置造成的任何困难。 (如果它有所帮助,我不愿意升级到2010年,因为2005-> 2008升级仅仅是8天的纯粹地狱。但相比之下,升级到2010年的核心只用了几个小时而且“刚刚工作” - 安装/升级过程大大改进了)

答案 1 :(得分:0)

杰森有正确的想法,引导我找到正确的解决方案。

在我的情况下,我不得不更新“Microsoft.TeamFoundation.Build.targets”以指向“Microsoft.TeamFoundation.Build.ProcessComponents.dll”(VS2010 dll)而不是“Microsoft.VisualStudio.QualityTools.MSBuildTasks”。 dll“(VS2008 dll)

我还必须确保在TfsBuild.proj文件中指定了PlatformToBuild。

完成这两个步骤后,使用TFS2008和VS2010解决方案将UnitTests作为CI构建的一部分运行。

我在这里详细介绍了解决方案:http://blog.aggregatedintelligence.com/2011/03/vs2010-tfs-2008-and-unit-tests.html