为啥要使用 Mockito? [关闭]

Posted

技术标签:

【中文标题】为啥要使用 Mockito? [关闭]【英文标题】:Why to use Mockito? [closed]为什么要使用 Mockito? [关闭] 【发布时间】:2017-02-17 23:28:00 【问题描述】:

我是 Mockito 的新手,我已经开始学习它。但我有一些问题。为什么我们需要使用 Mockito?据我所知,它用于模拟(创建虚拟对象)并在实际运行代码之前编写测试用例。但是,如果我想测试我已经实现的代码以检查它们是否正常运行怎么办。我将如何使用 Mockito 对其进行测试?

例如,我有 CRUD 方法,我想通过使用我的 Create 方法在数据库中实际插入数据来测试 Create 是否正常运行,对于其他方法也是如此。我们可以使用 Mockito 来实现它吗?如果没有,那我是否需要在不使用 Mockito 的情况下为它们编写不同的测试用例?

【问题讨论】:

你永远不会模拟被测类(CUT)。你嘲笑它的依赖关系。如果您正在测试 CRUD 方法,您不需要创建数据库、填充数据、创建连接池、提供连接等。您只需提供 mock(Connection.class) 并验证您的 @987654324 @ 方法以适当的方式调用 Connection 上的行为。重申一下,您永远不要模拟 CUT 只是想知道:您是否阅读过任何有关 Mokito 的文档/教程来了解它?看来您的第一个想法是在这里提出一个过于广泛的问题。 What is Mocking?的可能重复 相关 - ***.com/q/12539365 【参考方案1】:

Mock 用于您使用的每个类或服务。 被测类 不应被模拟。假设您正在连接到由您的一个工程团队构建的远程服务,并且您不熟悉其内部功能,但您知道它返回的请求和响应。 在这种情况下,您可以创建该对象的 Mock,并在不同情况下使用一组响应返回来定义它。每种情况都应该有自己不同的测试,并且对于每个响应,您应该分别检查代码的反应(您正在处理)。

另一个很好的例子是创建限制检查。让我们想想在某些情况下可能抛出的异常。 您可以模拟将抛出简单异常的对象(如果您使用的是 Mock,则大约需要 2-3 行测试代码),并且您可以检查您编写的代码如何对该异常做出反应。如果没有 Mock,抛出异常可能是一件非常复杂的事情,如果您不熟悉这些小细节,那么使用起来就不那么容易了。当然,Mock 使您能够专注于您正在检查的主要功能,因为它使检查时间非常非常短。当上市时间至关重要时,这是一种祝福。

【讨论】:

以上是关于为啥要使用 Mockito? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Mockito 如何模拟和断言抛出的异常?

Mockito 与 JMockit 之间的比较 - 为啥 Mockito 的投票比 JMockit 好? [关闭]

Java 最好的模拟框架是啥? [关闭]

为啥嘲笑 DAO 时 mockito 崩溃?

Mockito 比 EasyMock 更受欢迎? [关闭]

Mockito + Spring + @PostConstruct,mock初始化错误,为啥会调用@PostConstruct?