为什么我们需要创建mock对象



我是单元测试的新手,我的经理推荐了Mockito。我正在探索这个工具,但有一些困惑,比如:

  1. 为什么我们需要创建mock对象,而我们可以创建任何类的真实对象。

  2. 为什么我们使用诸如"when and then"条件之类的存根设置任何方法的行为,而开发人员则设置该方法的行为。

  3. 如果我们对任何方法进行存根处理,那么它将是静态的,以防开发人员更改该方法的代码,那么它的影响将不会出现在我们的测试用例中,它将始终通过

例如:

   TestingServices test = Mockito.mock(TestingServices.class);
   // define return value for method getUniqueId()
    System.out.println("unique id is "+test.getUniqueId());
    when(test.getUniqueId()).thenReturn(44); 
    assertEquals(test.getUniqueId(),44); 

在上面的代码片段中,无论开发人员是否更改代码,assertEquals都将始终通过。

首先要注意在任何情况下测试的内容。

在你的代码片段中,你似乎正在测试类TestingServices,你不应该嘲笑这个类,因为它是你正在测试的,而不是Mockito如何注入你的"假"方法响应。实际上,在您的示例中,您正在测试Mockito注入您想要的行为,并按预期工作,仅此而已

例如:TestingServices类内部有一个对象,该对象使用第三方API并获得响应(或MVC架构中控制器使用的DAO对象)。如果您正在对TestingServicesController进行单元测试,您不希望因为依赖性而失败,您可以模拟系统的这一部分。

Mocking让您专注于测试中的类,而不是测试过程中所需的上下文或其他类,并抽象其余组件。

有很多问题在谈论这个:

  • 什么';装腔作势、嘲弄和固执有什么区别
  • Java中的mock对象是什么

相关内容

  • 没有找到相关文章

最新更新