Mock是否称为Real Objects?

时间:2016-05-30 23:17:41

标签: unit-testing mocking

  • 在单元测试中,模拟对象如何比真实对象更好?

  • 创建模拟对象时,究竟是什么意思?例如,假设您创建了

    a a = Mockito.mock(A.class);

    是否会创建A类对象?或其他什么?

  • 当您创建一个模拟对象并在调用方法时使用它时,比如a.method1(),模拟对象如何知道它应该调用method1本身?

请让我知道这些。

1 个答案:

答案 0 :(得分:1)

什么是单元测试

单元测试建议您只想在小型环境(通常是一个类)中查看您的功能。但是这堂课经常与其他班级交谈,而那些班级则与其他班级交谈......这可能意味着很多工作,只是为了让这一课成为现实。此外,您只想测试您的设备。这就是模拟/存根进入的地方。稍后我将解释这种区别。

你做的是 - 而不是重新创建你的整个应用程序 - 来做出假设。模拟基本上是一个假设。你的课所需要的一切都被嘲笑或抄袭。对于已经测试过的设备部件,情况也是如此。你假设,然后你测试你的单位的一个特定(真实)部分。然后在必要时嘲笑这个,依此类推。

现在模拟和存根之间有什么区别。

两者都是假设,但嘲笑也是期望。因此,如果您使用模拟,您的测试框架应该抱怨,如果它没有被使用/调用。 另一方面,存根就是这种情况。就像随机调用Internet一样,查找数据库,这对测试本身并不重要。

您的框架实际创建的内容取决于框架和语言。但它将/不应该调用原始方法,如上所述。通常,您必须明确地告诉框架,这有时可能有意义。

相关问题