2009-01-02 123 views
9

我只是想知道是否有其他人只看到集成测试只是一个特殊的单元测试。不过,我从其他程序员那里听说,分离单元测试和集成测试是一个好主意。我想知道是否有人可以解释为什么这是一个好主意。将整合和单元测试视为完全不同的是什么样的优势?例如,我已经看到了用于集成测试和单元测试的单独文件夹和包。我认为一个包含单元测试和集成测试的测试包就足够了,因为它们基本上都是相同的概念。您是否将单元测试与集成测试分开了?

回答

7

由于以下原因,我将它们视为不同。

  • 单元测试可以在开发人员环境中的单个类/模块上执行。
  • 集成测试应在类似于实际生产设置的环境中执行。

单元测试有意保持“轻量级”,以便开发人员能够以最低的成本按需要运行它们。

3

是的。通常,单元测试的范围在类级别,所以它们与模拟对象一起存在于环境中。另一方面,集成测试通过保持对组装类型的引用来完成所有的技巧。

我只是没有看到如何组织单元和集成到单个项目中。

7

速度是主要原因。你希望你的单元测试尽可能快,以便你可以尽可能经常运行它们。您仍然应该运行集成测试,但在签入之前运行它们应该足够IMO。单元测试套件应该更频繁地运行 - 理想情况下是每次重构。

我在一个环境中工作,在这个环境中,我们有大约15k的junit测试,单元测试和集成测试完全混合。全套房需要大约半小时才能运行。开发人员避免运行它,并且比他们应该的时间晚。有时他们在运行只有一部分测试后检查,并且包含破坏连续构建的错误。

开始早期分离您的测试。一旦你有一个大套房很难。

+0

同意。混合单元和集成测试是一个真正的痛苦。 – 2009-11-24 08:51:10

3

如果限制“单元测试”,以在类级别范围的概念,那么,保持然而,他们分开

如果你定义的最小相关可测试单元为功能然后一些你的'单元'测试在技术上将是'集成'测试

对术语的各种定义/解释的重新调整在很大程度上是不相关的,但是,测试套件的划分应该是被测试组件的范围的函数以及执行测试所需的时间。例如,如果所有测试(单元,集成,回归或其他)都适用于单个程序集并在几秒钟内运行,那么将它们放在一起。但是如果某些测试需要在子网上使用六台干净的安装机器,而其他测试则不需要,将第一组测试与后一组测试分开是有意义的。

摘要:“单元”和“集成”测试的区别在于无关紧要的;基于操作范围的包测试套件

相关问题