【问题标题】:MSTest v2 Ordered TestsMSTest v2 有序测试
【发布时间】:2019-08-19 13:48:28
【问题描述】:

我正在使用 Visual Studio 2017 Enterprise 和 MSTest V2。我的解决方案有多个单元测试项目。在一个项目中,我有单元测试来测试从安装目录加载资源的情况。大多数测试资源是否正确加载,但有些会删除资源以确认也正确处理。

我遇到的问题是测试并行运行。因此,删除资源的测试在加载资源的测试正在运行的同时执行此操作,并且我得到了失败的测试。

我意识到我可以通过更新我的代码以将目录发送到搜索,或者通过运行一组测试然后下一组来解决这个问题,但我更希望能够一次运行所有测试。听起来 MSTest v2 应该按顺序运行,除非另有指示并行运行,但在我的系统上,这显然是错误的。似乎 Ordered Test 不适用于 v2。有没有办法让 MSTest V2 顺序运行?

【问题讨论】:

  • 我在使用 MSTest 时遇到了同样的问题,想知道您是否能够解决这个问题?
  • @user1207289 - 我无法让它按顺序运行。我为下一个项目切换到 nUnit。对于已经进行过测试的这个,我使用锁定对象来强制对需要的方法进行顺序处理。不是最好的方法,但这是我能找到的唯一解决方案。

标签: c# unit-testing visual-studio-2017 mstest


【解决方案1】:
  1. MStest v2 将不支持有序测试 issue
  2. 您可能在 testsettings 文件或 Assembly 文件中设置了并行化范围 https://www.meziantou.net/mstest-v2-execute-tests-in-parallel.htm 如果您删除它,它将按顺序运行

我想说你可以创建一个标志并从依赖测试中更新它,在清理资源之前检查标志状态。可能是测试名称和状态的字典,一旦完成,执行此测试或等待该测试完成。您可以为此实现自定义逻辑。

【讨论】:

    【解决方案2】:

    要使测试按顺序运行,请在 .runsettings 文件中将 MaxCpuCount 设置为 1,有关详细信息,请参阅:Configure unit tests by using a .runsettings file

    【讨论】:

    • 感谢您的建议,但不幸的是,这不起作用。根据文档,“测试执行引擎在每个可用内核上作为一个不同的进程启动,并为每个内核提供一个容器,其中包含要运行的测试。”这些测试似乎仍然并行运行,但仅限于单核。
    • 根据链接的文档,默认值为 1。所以假设用户还没有 .runsettings 文件,这不是真的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多