【发布时间】:2016-05-13 06:26:11
【问题描述】:
我是单元测试的新手,我的经理推荐了 Mockito。我正在探索这个工具,但有些困惑,例如:
为什么我们需要创建模拟对象,而我们可以创建任何类的真实对象。
为什么我们使用存根设置任何方法的行为,例如“when and then”条件,而开发人员设置方法的行为。
1234563
例如:
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);
在上面的代码中,sn-p assertEquals 总是会通过,无论开发者是否更改代码。
【问题讨论】:
-
您的测试是一个不好的例子,因为它是单元测试它所模拟的东西。在一个真实的例子中,您将通过模拟 B 对 A 进行单元测试,以便隔离 A 的行为,反之亦然。然后你会有更高级别的集成测试来检查 A 和 B 在没有被模拟时仍然正确交互。
-
嗨 Jonrsharpe,谢谢你给我 ans..实际上我关心的是为什么我们需要创建模拟对象和存根?请解释一下,您的帮助将消除我的疑虑。
-
嗨,Exoddus,你能给我更多的例子,当我们创建模拟对象或不需要创建它时。
-
@MohdAbad 当您不想想要测试交互时,当您想要测试应用程序的单个单元时,您需要创建模拟/存根隔离.
标签: unit-testing testing mockito