Java 中的模拟对象是什么?

2022-08-31 22:26:29

我想知道Java中有哪些模拟对象。我们为什么要创建它们,它们的用途是什么?


答案 1

Mock 对象是用于单元测试的东西。如果您有一个要测试其方法的对象,并且这些方法依赖于某个其他对象,则可以创建依赖项的模拟,而不是该依赖项的实际实例。这允许您单独测试对象。

用于创建模拟对象的常见 Java 框架包括 JMockEasyMock。它们通常允许您创建可以定义其行为的模拟对象,以便您在 mock 对象上调用方法时确切地知道会发生什么(就返回值和副作用而言)。

例如,一个常见的用例可能是在 MVC 应用程序中,其中有一个 DAO 层(数据访问对象)和一个执行业务逻辑的控制器。如果要对控制器进行单元测试,并且控制器依赖于 DAO,则可以模拟 DAO,将虚拟对象返回到控制器。

需要注意的一件事是,模拟对象通常实现与它们正在模拟的对象相同的接口 - 这允许您的代码通过接口类型处理它们,就好像它们是真实事物的实例一样。


答案 2

Mocking and Mock Objects 并不是 Java 所特有的。模拟对象是一种单元测试技术,其中代码块被模拟真实代码的虚拟实现所取代。这有助于针对被测类提供的功能编写单元测试。

查看这些文章,这些文章很好地介绍了模拟的概念:
模拟对象 (PDF)
Endo-Testing: 使用模拟对象进行单元测试 (PDF)

如果你正在寻找一个用于Java单元测试的模拟框架,看看:Mockito。我发现它对我的单元测试很有用。


推荐