首页 文章

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

提问于
浏览
0

我的配置:

  • VS2010解决方案

  • TFS 2008

  • 构建服务器 - TFS 2008

  • 构建服务器还安装了VS2008 Team Suite和VS2010

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

使用程序集“D:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PrivateAssemblies \ Microsoft.VisualStudio.QualityTools.MSBuildTasks.dll”中的“TestToolsTask”任务 . 任务“TestToolsTask”命令:d:\ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ MSTest.exe / nologo / searchpathroot:“D:\ Builds \ App \ Source \ 86 \ Binaries”/ resultsfileroot:“D:\ Builds \ App \ Source \ 86 \ TestResults“/ testcontainer:"D:\Builds\App\Source\86\BINaries\Tests.dll”/ publish:“http:// tfsServer:8080 /”/ publishbuild:“vstfs :/// Build / Build / 26029“/ teamproject:”Proposal“”TestToolsTask“任务使用”d:\ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ MSTest.exe“中的”MSTest.exe“ . 没有为发布操作指定平台 . 对于切换语法,键入“MSTest / help”MSBUILD:警告MSB6006:“MSTest.exe”退出,代码为1. [D:\ Builds \ App \ Source \ 86 \ BuildType \ TFSBuild.proj]上一个错误已转换为警告,因为使用ContinueOnError = true调用任务 . 构建继续,因为任务“TestToolsTask”上的“ContinueOnError”设置为“true” . 完成执行任务“TestToolsTask” - 失败 .

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

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

2 回答

  • 0

    您可以在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年的核心只用了几个小时而且“刚刚工作” - 安装/升级过程大大改进)

  • 2

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

    在我的情况下,我不得不更新“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

相关问题