【问题标题】:VSTest: Order the execution of test assembliesVSTest:命令测试程序集的执行
【发布时间】:2020-09-27 10:14:18
【问题描述】:

我们的代码库有 100 多个项目,每个项目都有测试。一些测试程序集需要更多时间,而其他一些程序集则需要更少的时间来执行测试。

Azure DevOps 服务器并行运行我们的整个测试套件,这使得它非常快。 但问题是,长时间运行的测试是在测试运行的中间开始的,这会导致整个测试运行时间更长。

有没有办法影响测试程序集的启动方式和时间?我想先启动长时间运行的测试程序集,然后再启动快速测试程序集。

【问题讨论】:

  • 好几天没有收到您的回复。如果答案可以满足您的要求,请随时告诉我。只是提醒this
  • 我也在寻找实现这一目标的方法。你找到解决办法了吗?

标签: vstest vstest.console.exe azure-devops-server


【解决方案1】:

由于您正在并行运行测试,您可以尝试在 Visual Studio 测试任务中使用Based on past running time of tests 选项。

根据这个关于Parallel test的文档:

此设置会考虑过去的运行时间来创建测试切片,以便每个切片具有大致相同的运行时间。短期运行的测试将一起批处理,而长期运行的测试将分配到单独的切片中。

此选项允许根据运行时间分组运行测试。最后,每组将在相似的时间内完成。

希望这会有所帮助。

【讨论】:

  • 我也想过,但是我不需要多个代理吗?
  • @F.Baum 是的。您需要配置多个代理。根据我的测试,每个工作的工作时间都差不多。
  • 由于多种原因,我无法使用多个代理。是否有其他方式来命令执行?
  • 能否分享一下测试并行运行的方式?您是否使用此选项:Run tests in parallel on multi-core machines?
  • 是的。我正在使用标志Run tests in parallel on multi-core machines
【解决方案2】:

我们通过安排项目文件夹来实现这一点,以便它们首先提供运行时间最长的测试程序集。你可以看到 VSTest 在 Azure DevOps 输出中查找程序集的顺序。从那里您可以重命名文件夹以影响订单。

如果有其他方法可以实现这一点,那就太好了。

【讨论】:

    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2014-04-24
    • 1970-01-01
    • 2016-03-19
    • 2011-08-27
    • 2011-03-18
    相关资源
    最近更新 更多