单元测试是否针对Visual Studio中的多个内核?

时间:2009-10-17 17:25:55

标签: visual-studio visual-studio-2008 unit-testing multicore

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

  1. 本地定位多个核心
  2. 不会自动定位多个核心,但可以配置
  3. 根本没有针对多个核心

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

我们使用MSTEST从匹配文件中运行我们的测试。

您可以尝试将测试分解为多个dll。然后为每个测试dll打开一个cmd窗口,并从批处理文件开始测试。

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

答案 3 :(得分:0)

您没有提到您正在使用的测试框架,但如果您正在讨论cppUnit等,那么它的(3),根本不针对多个核心的框架。

你必须投入一些工作来获得基于xUnit框架的单元测试应用程序来定位多个核心(即使用多个线程),或编写自己的框架来实现它。

答案 4 :(得分:0)

我无法直接回答您的问题,因为我对产品没有内部知识,但您可能对Rig类型设置感兴趣,您可以使用测试代理扩展计算机以并行执行测试:

Controllers, Agents, and Rigs

Ed Glas's blog on VSTS load testing

答案 5 :(得分:0)

传统的单元测试方法不能扩展以解决多核上并发进程中出现的潜在并发问题。您将需要一种专门的工具来重现可能出现的相对罕见且难以重现的错误条件(Heisenbugs)。有关详细信息,请参阅this blog post by James Reinders。这种用于.NET开发的工具的示例是CHESS from Microsoft research。一些谷歌搜索将揭示适合您的场景的其他人。

答案 6 :(得分:0)

您可以切换到MbUnit,它已支持parallel test execution几个月了。