gpt4 book ai didi

visual-studio-2010 - 从 TFS2010 Team Build 运行 VS2012 单元测试

转载 作者:行者123 更新时间:2023-12-01 01:06:21 26 4
gpt4 key购买 nike

我有一个使用 .NET 4.5 框架的 Visual Studio 2012 解决方案。我们开发系统的其余部分是 TFS2010。最近,我们的一些单元测试仅在构建服务器上失败。经过几轮调试后,我能够确定测试失败的原因很可能是由于构建服务器上使用的 MSTest 版本。在我的本地机器上从 VS2012 运行和在实际构建服务器上从 VS2012 运行时,有问题的测试通过。

我按照以下文章中描述的步骤(我没有找到任何与 VS2012 和 TFS2010 直接相关的有用文章)没有成功:Running VS2010 UnitTests project from TFS2008 Team BuildVS2010, TFS 2008 and Unit Tests

在构建服务器上,我现在有以下内容:

  • VS2010 Ultimate SP1 已安装
  • VS2012 Update 3 已安装
  • .NET 4.5 框架 SDK 已安装
  • 更改了“C:\Program Files (86)\MSBuild\Microsoft\VisualStudio\TeamBuild\”和“C:\Program Files\MSBuild\Microsoft\VisualStudio\TeamBuild\”中的 Microsoft.TeamFoundation.Build.targets 文件,因此 AssemblyFile 属性TestToolsTask 构建任务指向“C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Build.ProcessComponents.dll”

  • 我有 2 个我一直在测试的构建定义:
  • 在第一个构建定义中,我将“运行 MS 测试”事件的 ToolPath 留空,因此它使用“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE”
  • 在另一个构建定义中,我将“运行 MS 测试”事件 ToolPath 参数更改为“C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE”

  • 两个构建定义似乎都在正确构建并使用以下 MSBuild.exe:
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

    第一个构建定义运行 VS2010 版本的 MStest 有任何错误,但大约有 5 个错误。 2030 测试失败。在 Visual Studaio 2012 中运行时,这些测试不会失败。命令行的一个示例是(删除了实际路径和服务器名称):
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe 
    /nologo /usestderr /searchpathroot:"d:\Builds\xxxxx\Binaries"
    /resultsfileroot:"d:\Builds\xxxxx\TestResults" /testcontainer:"d:\Builds\xxxxx.dll"
    /testcontainer:"d:\Builds\xxxxx.dll" /publish:"http://xxxxx
    /publishbuild:"vstfs:///Build/Build/xxxxx" /teamproject:"xxxxx" /platform:"x86" /flavor:"Debug"

    运行第二个构建定义时,MSTest 无法运行,输出如下。如果我从构建服务器上的命令行运行此命令,而没有导致无效开关错误的开关,则 MSTest 将运行并通过相关测试:
    The MSTestActivity was invoked without a value for Platform or Flavor. The values x86 and Debug were used.

    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe
    /nologo /usestderr /searchpathroot:"d:\Builds\xxxxx\Binaries"
    /resultsfileroot:"d:\Builds\xxxxx\TestResults" /testcontainer:"d:\Builds\xxxxx.dll"
    /publish:"http://xxxxx" /publishbuild:"vstfs:///Build/Build/xxxxx" /teamproject:"xxxxx"
    /platform:"x86" /flavor:"Debug"
    Invalid switch "/publish".
    Invalid switch "/publishbuild".
    Invalid switch "/teamproject".
    Invalid switch "/platform".
    Invalid switch "/flavor".
    For switch syntax, type "MSTest /help"

    我已经对这些构建进行了很多次运行,但我无法解决问题。我还有什么遗漏需要在构建服务器或构建定义中完成的吗?

    关于失败的实际测试,它们的共同点是比较列表中的对象,但如前所述,它们在 VS2012 中运行时通过。

    最佳答案

    在构建服务器上安装 VS2012 Ultimate 会导致运行 MSTest 时无效开关错误消失,并且 MSTest 可以成功运行。我之前安装了 VS2012 Professional 和 VS2012 Team Explorer,但这些版本“显然”(在大量调试运行后发现!!)不包含所需的 MSTest 版本。有关 MSTest 命令行选项的信息没有提到这一点( MSDN Command-Line options for publishing tests ),只提到必须安装 Team Explorer。

    关于visual-studio-2010 - 从 TFS2010 Team Build 运行 VS2012 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510935/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com