代码依赖单元测试

时间:2011-08-18 23:14:54

标签: c# .net unit-testing nunit

在我的工作场所,我们有一个c#.net解决方案,包含大约50个项目和大约2000个单元测试。更改代码后,我们需要在将更改推送到构建服务器之前运行解决方案中的所有测试。运行所有测试大约需要10-15分钟。我在想 - 嘿,也许可能会有一些过程会分析我所做的所有代码更改,然后决定只运行相关的测试方法。如果可以进行这样的分析,那么计算机只运行15次或100次测试,而不是运行2000次测试,那么我们谈论的是生产率的提高和减少的头痛。 任何人对如何实现这一点,或者如果有这样的软件有任何想法?

4 个答案:

答案 0 :(得分:5)

很难说多少取决于多项目环境中的内容。理想的情况是:

  • 您的单元测试将是真正的单元测试,其中2000个应该在20秒内运行。
  • 你的长时间运行的测试将在你的构建服务器上持续构建,所以如果你错过任何东西,你仍然可以很快得到通知,但是你个人可以只是一个 更有选择性地在您提交之前仅运行您认为可能会影响代码更改的测试。

答案 1 :(得分:2)

我们的C# Test Coverage Tool可以做到这一点。

  1. 它会逐步调整自那以后发生变化的文件 最后一次测试报道。

  2. 它可用于跟踪每个单元测试的测试覆盖率,以及涉及的文件。文件更改时,会将其与先前版本进行比较;如果一个方法 参与某些单元测试之前的更改,它确定了那些单元测试。 您必须组织该过程以将测试运行与覆盖数据相关联,并重新运行已识别的单元测试,但这只是脚本的一小部分。这样做的原因是使测试覆盖率工具能够与任意测试框架一起运行。

  3. 您可以在构建服务器上执行此操作以节省时间。更重要的是,您可以为每个开发人员提供这一功能,这样他就可以在签入更改之前运行验证所更改代码所需的测试。

答案 2 :(得分:2)

Visual Studio 2010 Premium和Ultimate具有“测试影响”工具,可以完全实现这一目标。

答案 3 :(得分:0)

在我们的环境中,我们使用NCrunch http://www.ncrunch.net/

它构建项目并使用多个线程在后台运行单元测试。 它以愉快的方式通知您失败的单元测试。

NCrunch几乎可以满足您的需求。看看。

相关问题