Java 测试中 mock 对象
模拟对象有助于模拟和验证真实对象,而无需在这些对象中运行真实代码。你可以设置一个 mock 来返回方法调用的特定结果,并轻松验证该方法是否被调用。
如上所述,Mock 对象用于单元测试。如果你有一个要测试其方法的对象并且这些方法依赖于其他一些对象,那么在这种情况下,你可以创建依赖项的模拟而不是该依赖项的实际实例,并且你可以测试你的对象隔离中。
Java 中的模拟对象
用于创建模拟对象的常见 Java 框架包括 JMock 和 EasyMock。这两个框架通常允许你创建模拟对象,并且你可以相应地定义它们的行为,以了解返回值和效果的确切期望。
例如,一个常见的用例可能是在模型-视图-控制器 (MVC) 应用程序中,我们有一个数据访问对象 (DAO) 层和一个执行业务逻辑的控制器。如果你想测试控制器并且控制器依赖于数据访问对象 (DAO),那么你可以制作一个 DAO 的模拟对象,它将虚拟对象返回给你的控制器。
模拟对象有助于测试你要测试的应用程序的功能,因为我们可以通过模拟这些依赖对象来实现所有依赖项。
如果他们通过了测试,则可以确定该测试下的单元是正确的。
需要考虑的一件重要事情是,模拟对象实现与它们模拟的真实对象相同的接口。这允许你的代码通过接口类型处理它们,就好像它们是真实事物的实例一样。
要使用模拟对象,请导入 Mockito
库; 导入静态 org.mockito.Mockito.*;
允许你使用 mock()
方法,该方法有助于创建模拟对象实例。
下一步是模拟创建,语法是 List mockedList = mock(List.class);
。现在要添加一些值,我们使用定义的 List
对象如下,mockedList.add("Value one")
,并使用 verify()
方法验证它,如下:verify(mockedList).add("one")
。
//Import Library
import static org.mockito.Mockito.*;
// Create Mock
List mockedList = mock(List.class);
//using mock object
mockedList.add("one");
mockedList.clear();
// Varifying
verify(mockedList).add("one");
verify(mockedList).clear();
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,