首先,让我透露一下,我不是Java开发人员,我目前使用C#进行开发,因此我对Java所做的任何假设或陈述都可能不正确或不明信息。
在.Net中使用模拟对象编写单元测试时,99%的时间我们模拟接口。可以模拟类,但是你只能控制虚拟(因此可模拟)方法。
在Java中,由于默认情况下方法是虚拟的,所以我认为模拟一个类与模拟一个接口是一样的,因为所有东西都会被模拟行为所覆盖。
那么,在Java中依赖接口(以及因此在单元测试中模拟接口)仍然是最佳实践吗?或者大多数Java开发人员是否使用类来减少类型的数量(不需要接口)?
答案 0 :(得分:1)
我实际上做了相反的转换 - 也就是说,在java中进行模拟然后转换为csharp。传统上我工作的公司仍然嘲笑接口,如果具体确实有一个。否则,我们 模拟了由于您指定的原因而工作的实际类。因此,根据我的经验,出于明显的依赖性原因,我们优先考虑接口。
对于java,我们选择了Mockito模拟框架,我认为它的工作非常精彩。
答案 1 :(得分:1)
我也在Java中模拟接口。我认为这就是整个想法:客户只知道接口引用类型。你可以在它后面注入一个模拟实现,而客户端则不是更明智的。
答案 2 :(得分:1)
答案 3 :(得分:0)
尝试Mockito http://code.google.com/p/mockito/。非常简单而又强大!