集成和单元测试

发布时间:2020-07-05 22:28

在最近的几天里,我研究了有关Jest的测试,但接下来的内容我不理解。 当我进行集成测试时,我不使用模拟吗?模拟仅用于单元测试吗?

回答1

模拟是Test Double的一种-特定于测试的依赖项替换,目的是使自动测试具有确定性。

关于单元测试的构成没有公认的正式定义,但是在这种情况下,我发现以下定义(基本上是我自己的措辞)很有用:

单元测试是一种自动测试,可以独立于其依赖项来测试单元。

但是,此定义方便地避免了定义一个单位是什么,但这在此情况下不太重要。

同样,我们可以将集成测试定义为一种自动化测试,该测试可以测试具有实际依赖性的被测系统(SUT)。因此,该测试不是使用Test Double替换数据库依赖项,而是使用与真实数据库集成的SUT,等等。

因此,从这种集成测试的角度来看,因为所有真实的依赖项都已集成,所以不需要测试双打。

还有另一种集成测试的观点,即考虑将集成测试各个软件组件(如果需要的话,是 units )的用途相互结合,同时仍然替换数据库或Web等进程外资源。测试双打服务。这通常更容易实现,并且可能是有价值的技术,但是您决定调用这些单元测试还是集成测试在很大程度上是个人喜好的问题。

不幸的是,这些术语没有统一的定义。我通常会尝试使用xUnit Test Patterns中记录的词汇,该词汇是该主题(据我所知)中最全面且内部一致的工作。

回答2

根据ISTQB的定义,集成是“专注于组件或系统之间交互的测试级别。” 因此,您可以在单元之间,不同组件之间或子系统之间进行集成测试。您也可以集成系统系统。

您可以阅读unit test in wikipedia

因此,您也可以使用单元测试框架(模拟/存根)进行集成测试,但是当整个应用程序的集成测试通常需要完整的环境设置时,该单元测试框架就无法做到。