代码依赖单元测试

rav*_*oli 6 .net c# nunit unit-testing

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

Str*_*ior 5

很难说出什么取决于多项目环境中的内容.理想的情况是:

  • 你的单元测试将是真正的单元测试,其中2000个应该在20秒内运行.
  • 您长时间运行测试,将成立一个持续构建你的构建服务器上,所以你仍然会得到通知蛮快的,你把事情搞乱,如果你错过了什么,但你可以亲自负担只是一个更在运行选择性在提交之前,只有您认为可能会影响代码的测试发生更改.

  • +1用于将单元测试与集成测试分开.请参见http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test (5认同)

Ira*_*ter 2

我们的C# 测试覆盖率工具可以做到这一点。

  1. 它仅增量检测自上次测试覆盖率运行以来发生更改的文件。

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

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