本文概述
Mockito教程提供了Mockito框架的基本和高级概念。我们的Mockito教程是为初学者和专业人士设计的。它将帮助你使用Mockito框架学习和创建单元测试。
Mockito是一个模拟框架。它是一个基于Java的库, 用于创建简单和基本的测试API, 以执行Java应用程序的单元测试。它也可以与其他框架(例如JUnit和TestNG)一起使用。
什么是单元测试?
单元测试是一种软件测试技术, 其中测试软件的各个组件/部分, 即一组计算机程序, 使用过程等。对对象的单元测试在应用程序或项目的开发过程中进行。单元测试的目的是隔离一段代码(单元)并验证其正确性。一个单元称为单个功能或过程(程序)。开发人员通常在测试期间执行它。
什么是模拟?
模拟是开发对象的过程, 这些对象充当真实对象的模拟或克隆。换句话说, 模拟是一种测试技术, 其中出于测试目的, 使用模拟对象而不是真实对象。模拟对象为传递给它的特定(虚拟)输入提供特定(虚拟)输出。
模拟技术不仅用在Java中, 而且用在任何面向对象的编程语言中。 Java提供了许多用于模拟的框架, 但是Mockito是其中最受欢迎的框架。
要模拟对象, 你需要了解模拟的三个关键概念, 即存根, 伪造和模拟。有些单元测试仅涉及存根, 而有些则涉及伪造和模拟。
下面给出了模拟概念的简短描述:
- 存根:存根对象保存预定义的数据, 并提供其以在测试期间应答呼叫。它们被称为虚拟对象, 具有测试所需的最少方法数量。它还在必要时提供了一些方法来验证用于访问存根内部状态的其他方法。存根对象通常用于状态验证。
- 虚假:虚假是包含有效实现但与生产实现不同的对象。通常, 它带有快捷方式, 并且还包含生产代码的简化版本。
- 模拟:模拟对象在测试中充当真实对象的虚拟对象或副本。它们通常由开源库或诸如Mockito, EasyMock等的模拟框架创建。Mock对象通常用于行为验证。
需要嘲笑
在使用模拟技术之前, 我们应该了解使用模拟的原因, 如下所示:
- 如果我们要测试依赖于其他组件的组件, 但是该组件正在开发中。通常在团队工作时使用, 并且零件在几个队友之间分配。在这种情况下, 模拟在该组件的测试中起着至关重要的作用。在没有模拟的情况下, 我们需要等待测试所需元素的完成。
- 如果实际组件在处理数据库连接或其他复杂的读/写操作时执行慢速操作。有时, 数据库查询可能需要10、20或更长时间才能执行。在这种情况下, 我们需要模拟对象来执行测试, 并且可以通过模拟来完成。
- 如果存在基础设施方面的问题, 使得无法进行测试。这与第一种情况非常相似。例如, 当我们创建与数据库的连接时, 会发生一些与配置有关的问题。它需要模拟才能创建模拟组件以提供单元测试。
什么是Mockito?
Mockito是基于Java的模拟框架, 用于Java应用程序的单元测试。 Mockito在开发可测试的应用程序中扮演着至关重要的角色。 Mockito是根据麻省理工学院(麻省理工学院)许可发布的开源测试框架。它在内部使用Java Reflection API生成特定接口的模拟对象。模拟对象称为用于实际实现的伪对象或代理对象。
使用Mockito框架的主要目的是通过模拟外部依赖关系并在测试代码中使用它们来简化测试的开发。结果, 它提供了更简单的测试代码, 更易于阅读, 理解和修改。我们还可以将Mockito与其他测试框架(如JUnit和TestNG)一起使用。
Mockito框架是通过升级以下语言的语法和功能而开发的:
EasyMock框架。它由Szczepan Faber, Brice Dutheil, Rafael Winterhalter, Tim van der Lippe等开发人员组成的团队开发。 Mockito的稳定或最新版本为3.0.6版本, 已于2019年8月发布。
Mockito的好处
以下是Mockito框架的一些优点:
- 无需手写:在Mockito中, 无需编写模拟对象。
- 无需手写:在Mockito中, 无需编写模拟对象。
- 安全重构:重命名接口的方法名称或交换参数时, 不会更改测试代码, 因为模拟对象是在运行时创建的。
- 异常支持:它支持异常。在Mockito中, 堆栈跟踪用于查找异常原因。
- 注释支持:它使用@Mock等注释创建模拟对象。
- 顺序支持:它提供对方法调用顺序的检查。
先决条件
在学习Mockito框架的概念之前, 你应该具有Java编程方面的实践经验以及对JUnit框架的一些基本了解。
听众
我们的Mockito教程旨在帮助初学者和专业人士。
问题
我们向你保证, 我们的Mockito教程不会有任何问题。但是, 如果有任何疑问或问题, 请在我们的联系表格中发布。
评论前必须登录!
注册