哪个最好用Java;模拟接口或模拟类?

时间:2012-04-27 15:13:33

标签: c# java unit-testing mocking

首先,让我透露一下,我不是Java开发人员,我目前使用C#进行开发,因此我对Java所做的任何假设或陈述都可能不正确或不明信息。

在.Net中使用模拟对象编写单元测试时,99%的时间我们模拟接口。可以模拟类,但是你只能控制虚拟(因此可模拟)方法。

在Java中,由于默认情况下方法是虚拟的,所以我认为模拟一个类与模拟一个接口是一样的,因为所有东西都会被模拟行为所覆盖。

那么,在Java中依赖接口(以及因此在单元测试中模拟接口)仍然是最佳实践吗?或者大多数Java开发人员是否使用类来减少类型的数量(不需要接口)?

4 个答案:

答案 0 :(得分:1)

我实际上做了相反的转换 - 也就是说,在java中进行模拟然后转换为csharp。传统上我工作的公司仍然嘲笑接口,如果具体确实有一个。否则,我们 模拟了由于您指定的原因而工作的实际类。因此,根据我的经验,出于明显的依赖性原因,我们优先考虑接口。

对于java,我们选择了Mockito模拟框架,我认为它的工作非常精彩。

http://code.google.com/p/mockito/

答案 1 :(得分:1)

我也在Java中模拟接口。我认为这就是整个想法:客户只知道接口引用类型。你可以在它后面注入一个模拟实现,而客户端则不是更明智的。

答案 2 :(得分:1)

我推荐的另一个好框架是EasyMock。

http://easymock.org/

学习曲线较低,使用时没有任何问题。

答案 3 :(得分:0)

尝试Mockito http://code.google.com/p/mockito/。非常简单而又强大!