代码之家  ›  专栏  ›  技术社区  ›  Chris Arnold

单元测试是否针对VisualStudio中的多个核心?

  •  0
  • Chris Arnold  · 技术社区  · 16 年前

    随着单元测试数量的增加,我们发现在开发人员机器上持续运行所有测试越来越困难。有人知道Visual Studio 2008是否:

    1. 本机以多核为目标
    2. 不会自动针对多个内核,但它是可配置的
    7 回复  |  直到 16 年前
        1
  •  3
  •   Doron Yaacoby ICR    16 年前

    测试在单个线程中运行,因此只使用一个内核。这是所需的行为,因为如果使用静态变量或任何类型的全局状态(例如,一个测试更改一个静态变量,并在结束时将其更改回来。如果另一个测试同时运行,它可能会看到与预期不同的值),则让它们在多个线程上运行可能会导致测试出现意外行为。

        2
  •  2
  •   Drew Marsh    15 年前

    应该注意的是,随着VisualStudio2010的发布,MSTest现在支持并行运行单元测试。 See this blog post on the Visual Studio Team Test blog for more details .

        3
  •  1
  •   Shiraz Bhaiji    16 年前

    Visual Studio MSTEST将一次运行一个测试。

    您可以尝试将测试拆分到多个dll中。然后为每个测试dll打开cmd窗口,并从批处理文件启动测试。

    这应该允许您并行运行测试。如果幸运的话,mstest的每个副本都可以在不同的CPU上运行:)

        4
  •  0
  •   quamrana Ryuzaki L    16 年前

    您没有提到您使用的是什么测试框架,但是如果您谈论的是cppUnit之类的,那么它(3),一个根本不针对多个核心的框架。

    您必须投入一些工作来获得一个基于xUnit框架的单元测试应用程序,以针对多个核心(即使用多个线程),或者编写您自己的框架来实现这一点。

        5
  •  0
  •   John Lewin    16 年前

    Rig 键入设置,您可以使用测试代理扩展机器以并行执行测试:

    Controllers, Agents, and Rigs

    Ed Glas's blog on VSTS load testing

        6
  •  0
  •   cdiggins    16 年前

    传统的单元测试方法无法扩展以解决多核并发进程中出现的潜在并发问题。您将需要一个专门的工具来重现可能出现的相对罕见且难以重现的错误条件(Heisenbug)。看见 this blog post by James Reinders CHESS from Microsoft research . 一些谷歌搜索会发现其他适合你的场景。

        7
  •  0
  •   Mauricio Scheffer    16 年前

    你可以换成 MbUnit ,它支持 parallel test execution