Mock vs. Stub vs. Spy(模拟、存根和间谍)2024 年 8 月 29 日 | 阅读 3 分钟 Mock (模拟)Mocks 是存储方法调用的对象。它被称为用于测试中使用的依赖项的动态包装器。它用于记录和验证 Java 类之间的交互。mock 被称为测试替身中最强大和最灵活的版本。我们使用一个叫做 mock() 的方法进行模拟。 使用 mocks 的主要功能是它可以完全控制模拟对象的行为。模拟对象通常用于 行为验证。 行为一词是指检查应用于对象的正确方法和路径。 Mocks 主要通过使用库或模拟框架(如 Mockito、JMock 和 EasyMock)创建。它用于测试大量的测试套件,其中存根是不够的。mock 的一个重要功能是,我们可以验证给定方法被调用的次数。 以下代码片段显示了如何使用 mock()。 存根 (Stub)Stubs(存根)是保存预定义数据并使用它在测试期间给出响应的对象。换句话说,存根是一个对象,它类似于一个真实的对象,具有测试所需的最少数量的方法。当我们不想使用会使用真实数据给出响应的对象时,会使用存根。存根被称为最轻量级,也是测试替身中最静态的版本。 Stubs 的主要功能是
Spy (间谍)Spies(间谍)被称为 部分模拟对象。这意味着 spy 创建真实对象的局部对象或半个虚拟对象,通过存根或监视真实对象。 在监视中,真实对象保持不变,我们只监视它的一些特定方法。 换句话说,我们获取现有的(真实的)对象并 替换 或 监视 它的某些方法。 当一个类有很多方法,并且我们想模拟某些方法时,间谍很有用。 在这种情况下,我们应该优先使用间谍而不是模拟和存根。 如果方法没有被存根,它会调用真实的方法行为。 在 Mockito 中,使用 spy() 方法创建间谍对象。 它允许我们调用真实对象的正常方法。 以下代码片段显示了如何使用 spy() 方法。 Stub(存根)和 Mock(模拟)的区别
以下是模拟和间谍的一些区别
在之前的教程中,我们讨论了一些存根、模拟和监视的例子。 为了更好地理解存根、模拟和监视之间的区别,请查看这些例子。 下一主题监视或模拟抽象类 |
我们请求您订阅我们的新闻通讯以获取最新更新。