为什么要使用Mockito?

6

我刚接触Mockito并开始了解它,但我有一些问题。为什么我们需要使用Mockito?据我所知,它被用来模拟(创建虚假对象)和在实际运行代码之前编写测试用例。但是,如果我想要测试我的已实现的代码以检查它们是否正常运行,该如何使用Mockito进行测试呢?

例如,我有CRUD方法,我想要通过实际插入数据到数据库来测试Create方法是否正常运行,对于其他方法也是如此。我们能够使用Mockito来完成吗?如果不能,那么是不是需要编写不使用Mockito的不同测试用例?


10
你永远不要嘲笑被测试的类(CUT)。你只需要模拟它的依赖关系。如果你正在测试CRUD方法,你不想创建一个数据库、填充数据、创建连接池、提供连接等等。你只需提供一个 mock(Connection.class) 并验证你的 update() 方法是否以适当的方式调用了Connection上的行为。再次强调,你永远不要模拟CUT - Boris the Spider
你好,我想问一下:你有没有阅读关于Mokito的任何文档/教程来学习它?看起来你的第一个想法是在这里提出一个过于宽泛的问题。 - GhostCat
可能是什么是Mocking?的重复问题。 - kryger
相关 - https://dev59.com/e2cs5IYBdhLWcg3w1XbZ - Dawood ibn Kareem
1个回答

14
Mock 用于每个你使用的类或服务,但被测试的类不应该被 Mock。假设你正在连接一个由你团队中的工程师构建的远程服务,并且你不熟悉它的内部功能,但你知道它返回什么请求和响应。在这种情况下,你可以创建该对象的 Mock,并定义在不同情况下返回的一组响应。每种情况都应该有自己的不同测试,并且对于每个响应,你都应该单独检查代码(你正在工作的代码)的反应。
另一个伟大的例子是创建限制检查。考虑一些可能在某些情况下引发异常的异常。你可以 Mock 将抛出 Exception 的对象,这非常简单(如果你使用 Mock,则只需 ~2-3 行测试代码),并且可以检查你编写的代码如何对该 Exception 做出反应。没有 Mock,抛出异常可能会非常复杂,如果你不熟悉小细节,则难以使用。当时间市场是关键因素时,Mock 让你能够集中精力在主要功能上进行检查,因为它使检查时间非常非常短。那是一个祝福。请注意,必须保留 HTML 标记。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接