【问题标题】:How do I run MSpec tests in parallel on TFS 2013?如何在 TFS 2013 上并行运行 MSpec 测试?
【发布时间】:2015-03-03 18:30:00
【问题描述】:

我正在尝试让一堆 MSpec 测试在 TFS 2013 的多个内核上运行。它似乎不是开箱即用的。它可以运行 MSpec,但只能按顺序运行,需要一个多小时。

我关注 this guide,但在第 4 步中,他说将 Foreach Xaml 元素替换为 ParallelForEach 以使测试并行运行。我在TFS 2013下载了默认的构建模板,简单很多,但是没有这个标签。

它有:

<mtba:RunAgileTestRunner 
  DisplayName="Run VS Test Runner" 
  Enabled="[Not AdvancedTestSettings.GetValue(Of Boolean(&quot;DisableTests&quot;, false)]"
  TestSpecs="[AutomatedTests]"
  ConfigurationsToTest="[ConfigurationsToBuild]" />

【问题讨论】:

  • 如果您切换到 TeamCity,您应该能够并行运行 MSpec 测试,请参阅:stackoverflow.com/questions/24611933/…
  • @ds19 谢谢,但迁移到 TeamCity 对我们来说不是一个选择。解决方案必须在 TFS 内
  • 我完全不明白 TFS 是如何运行 MSpec 测试的……mtba:RunAgileTestRunner 似乎不支持 MSpec。你能展示你现有的测试任务吗?按顺序运行的那个?
  • @AnthonyMastrean 我们集成 MSpecs 的方式是使用 MSpec 视觉工作室测试适配器,就像这里 stackoverflow.com/questions/26871402/… 但这似乎只适用于相对较少的测试
  • 哦,听起来不太好。我没有使用过 TFS 构建系统。它应该能够执行 shell 并读取生成的 XML/HTML 报告。

标签: tfs mspec


【解决方案1】:

default MSpec test runner 无法并行运行测试。这就是为什么您会看到 parallel test runner 的重新实现。

我怀疑 TFS 是否正在从框架源代码实现 MSpec 测试运行器(尽管这是可能的)。那个并行测试运行器是using internal classes,就像ISpecificationRunner,并行运行它们。

如果您必须坚持使用 MSpec 和 TFS,您唯一的选择是

  • 将您的测试拆分为多个项目/程序集,并将它们提供给 TFS 并行任务,该任务由 shell 执行默认测试运行程序

  • 使用 TFS shell 执行任务通过并行运行器运行测试

【讨论】:

  • 这几乎就是我们所做的。我们基本上通过命令行使用默认模板中的 post 脚本构建路径属性运行测试。它不平行(所以不是这样),但运行测试的时间从 77 分钟下降到 8 分钟。我们丢失了所有报告,但至少失败的测试会破坏构建。缺陷是 VS MSpec 测试适配器的性能不佳 - 它会消耗内存,因此非常迅速地达到 32 位进程的 4GB 限制。控制台运行程序(或 Resharper)运行程序做得更好,因此可以与构建一起使用
【解决方案2】:

我假设如果您想并行运行测试,它们是需要很长时间才能运行的集成测试。

如果是这种情况,那么您应该将所有非单元测试移出构建并将它们进一步推到管道中。

http://nakedalm.com/execute-tests-release-management-visual-studio-2013/

您可以使用发布管理来部署您的应用程序并运行您的集成测试。在这里,您可以在不锁定构建服务器的情况下运行大量长时间运行的测试。

【讨论】:

  • 感谢您的回复。但是,将测试移出构建不是一种选择。以较低频率运行构建(每 2 小时),但测试的性能问题非常严重,以至于它经常使 App Domain 崩溃。我们所处的位置并不好,应该对一般测试策略进行审查 - 但是我们希望同时在 TFS 下构建这些测试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多