【问题标题】:How to use MsTest in Continuous Integration without VS?如何在没有 VS 的情况下在持续集成中使用 MsTest?
【发布时间】:2020-07-26 11:37:41
【问题描述】:

我的问题很简单,我有一个运行 msbuild 和 mstest 的 CI 服务器。

问题是Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 不存在(我认为其他与 mstest 相关的文件...)如果我们不在服务器中安装 VS 这对于 CI 服务器来说非常愚蠢...

我该如何解决这个问题?

【问题讨论】:

  • 他们现在有一个单独的安装程序用于此目的,称为“Visual Studio 代理”。 20102012 有一个。

标签: visual-studio continuous-integration cruisecontrol.net mstest


【解决方案1】:

不幸的是,在 2005 年或 2008 年 (There will be a test agent installer in 2010) 上,必须在构建代理机器上安装 VS 没有受支持或简单的方法。更新:See this post from Steve Smith for more info which says pretty much the same thing

这不仅仅是缺少程序集的问题 - 如果您想运行测试,运行程序不仅仅是一个单独的小 EXE 和一个 DLL。

是的,难以置信!不用说,地球上很少有其他测试框架有这个限制,所以除非你有很多测试,否则你可以考虑迁移,原因很多地方都有,例如:The fundamental problems and impracticality of using MSTest...

编辑:在 Rihan 的回复提示下,我添加了以下 Running mstest without Visual Studio. - 它不完全受支持,但它“有效”...

编辑 2:Running MSTest without Visual Studio - Gallio to the rescue 在受支持和非 hacky 方面看起来更有希望。请注意@Johannes Rudolph 对这篇文章的评论'

编辑 3:在这个问题上添加了关于 2010 年状态的信息

注意:我在 2008 年有一个类似的问题,关于支持 MSTest 的 /publish 参数需要什么:- Running MSTEST.exe /publish on a TeamBuild server, what are the prerequisites?

【讨论】:

  • 我知道 mstest 很糟糕,但它已集成到 VS,而且我的客户不想要 nunit 之类的其他东西......我暂时尝试测试 Rihan 的方式......最好的问候 Loïc
  • 很公平。我明白。其他好的方法是 TestDriven.NET、Gallio GUI 运行程序、NUnit GUI(你可以让它在编译时自动运行,效果非常好——这意味着你需要做的就是按下 Shift-F6 和任何你需要的测试集想要(基于类别或命名空间树,或通过复选框进行多选)立即重新运行。另一件事是考虑将它们路由到 NUnit(即使我通常会更容易卖给具有 MSTEST 意识的商店而不是 xUnit.NET默认情况下),然后使用 Resharper 或 TestDriven.NET 为 VS 集成测试提供卓越的体验。
  • 是的,我知道 TestDriven.Net,但 10 个许可证的成本超过 1000 美元,与 resharper 相同,但一些开发人员已经拥有他们的许可证。目前 Rihan 的方式有效,但我想知道它是否合法:/ 如果不是,我会尝试在 NUnit 中移动开发,但这会很困难,他们已经不想进行与 VS 交互的单元测试UI 所以 NUnit ......但我会尝试。感谢您的帮助,如果有人对合法性和许可有答案,那就太好了:)
  • 我认为合法性很好——我引用的一篇文章中有一个链接,链接来自 MS 的 Jeff Beehler 的评论。安装是比较困难的一点——无论如何安装程序上都没有复选框。我个人使用 RedGreen(一个 DXCore 插件)来运行测试,但它并不完美。如果将测试运行程序集成到 IDE 中对于开始运行单元测试来说是一个大问题,那么你肯定有工作要做,但我一直站在你的立场上,这很棘手,需要任何能说服人们的东西......
  • 这是我让它工作的原因:jorudolph.wordpress.com/2011/04/02/…
【解决方案2】:

@Ruben Bartelink:您可以通过安装测试代理在您的机器中获取 mstest.exe。你可以找到它@给定的位置。安装后,使用 /testcontainer 和 /test 选项调用 mstest.exe。它成功运行并创建 trx 文件。检查可以处理 trx 并生成报告的东西。

http://www.microsoft.com/en-us/download/details.aspx?id=38186

【讨论】:

    【解决方案3】:

    我和 Visual Studio 2010 的具体解决方案是:

    1. Visual Studio Agents 2010 安装“Test Agent 2010”
    2. 重启 Windows
    3. 安装Visual Studio 2010 Service Pack 1
    4. 重启 Windows
    5. 确保将项目引用更新为指向“Microsoft.VisualStudio.QualityTools.UnitTestFramework”“10.1.0.0”而不是“10.0.0.0”。

    【讨论】:

      【解决方案4】:

      我们在集成服务器上设置了 Cruise Control。我还没有安装 Visual Studio,但是我已将 MSTEST 程序集复制到 GAC 中。然后我们使用Cruise Control Documentation 来设置我们的测试报告。效果很好。

      【讨论】:

      • MSTEST.EXE 是如何进入机器的?是否有地方详细说明了执行该部分所涉及的步骤(并且 qhich QT dll 需要进入 GAC)。显然,如果这行得通,那就太好了……
      • 这是一个共享的开发环境,另一个人让 MSTests 运行,不知道他们做了什么来让它运行。同样有帮助的是,在您的源代码签出中,我们有一个资源文件夹,其中包含方便的小工具,例如 mstest.exe 和 tinyget.exe,它们有助于在构建后执行 http get 以检查站点是否正常工作。使结帐更大,但这在这一点上没有任何问题。一直在寻找更好更简单的自动化方法。
      • 我敢肯定,我在回复中添加的链接中所涵盖的一些内容就是发生了什么......我建议使用像 Gallio 这样的东西,或者切换到 NUnit 或 xUnit .NET - 特别是如果您是选择 CC.NET 与 TeamCity 或 VSTS 的商店类型
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      相关资源
      最近更新 更多