VisualStudio运行两组不同的测试

时间:2014-12-17 11:15:35

标签: c# unit-testing visual-studio-2013

目前我有一个(业余爱好)项目,包含大约3,800个测试。从这些测试来看,大约需要3000次(总共5分钟)。

由于我将在接下来的几个月内进行很多重构,我需要经常运行它,将它们拆分为两组是很好的,一组(那些3,000)更像集成测试,和一组单元测试(部分遗憾地)测试一些功能。

是否可以制作多个组并分别运行每个组?或者我应该将它们打包在不同的测试项目中吗?

(顺便说一句,我知道最好进行大部分单元测试,但那些3000'慢'测试的速度非常快,而且因为我的空闲时间很少,所以我考虑了缺点。 / p>

2 个答案:

答案 0 :(得分:1)

这与我所处的情况非常相似。正如您所提到的,不幸的是,测试套件已经在项目的原因上逐渐增长。我们有大约6000个测试,大约4000个是集成测试。其余的(~2000)主要是单元测试。

当我加入项目时,我做的第一件事就是完全解耦单元测试和集成测试。基本上将它们打包成不同的项目。一个结束* UnitTests.csproj和另一个IntegrationTests.csproj 旁注:从病房开始,我鼓励大家编写更多的单元测试(而不是集成测试),但这并不像我预期的那样完全正常工作:)

无论如何...... 单元测试: 解耦测试项目是关键,因为现在我们可以单独运行单元测试到集成测试。您可以将它们配置为运行部分CI构建,它们将快速运行。

在您的情况下,您甚至可以查看删除大量集成测试(在重构期间),并编写单元测试以从测试套件中获得更多价值。

集成测试 - 正在测试如此多的功能以及如此多的慢速测试。我们负担不起将它们作为CI构建的一部分运行 - 太慢了。因此,我们每隔几个小时就会在预定的构建中运行它们。如果其中一个测试失败了,那么优先考虑的是尽快修复失败的测试。我们无法摆脱这些测试,因为它显示了当前的稳定性,甚至没有以正确的方式完成。

答案 1 :(得分:1)

您可以将测试拆分为两个项目,或使用自定义属性。有关详细信息,请参阅here

实质上,标记慢速运行测试:

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [TestFixture]
  [Category("LongRunning")]
  public class LongRunningTests
  {
    // ...
  }
}

然后您可以使用/include/exclude参数从提示中运行您想要的内容。 e.g。

nunit-console myassembly.dll /exclude:LongRunning