2008-09-18 31 views
3

我的代码需要一个接口作为输入,但只能解释一些接口的方法(通常只是getter)。在Java中存储复杂接口的最简单方法是什么?

测试代码时,我很想定义一个返回测试数据的匿名内部类。但是我该如何处理接口需要的所有其他方法?

我可以使用我的IDE为接口自动生成存根,但看起来代码量很大。

什么是最简单的方法来存根我所关心的两种方法,而不是我没有的方法?

回答

5

如果您使用JUnit进行测试,请使用Mocks而不是存根。

阅读Martin Fowler的开创性文章“Mocks Aren't Stubs

我推荐EasyMock框架,它就像一个魅力的使用反射自动嘲讽你的界面。它比Fowler文章中的代码示例更高级一些,尤其是当您使用unitils库来封装EasyMock时,所以语法将比本文中的语法简单得多。另外,如果你没有接口,但你想模拟一个具体的类,EasyMock有一个类扩展。

0

写的“适配器类”,并覆盖只有你关心的方法。

class MyAdapter extends MyClass { 
    public void A() { 
    } 
    ... 
} 
0

我相信经典的方法是用空方法创建一个抽象类。 至少,这就是Sun为MouseListener所做的工作,创建了MouseAdapter以简化这些事件的使用。

0

EasyMock或JMock绝对是赢家。我没有使用JMock,但我知道在EasyMock中,您可以根据测试脚本设置Mock对象,并且在测试过程中它会在某些情况或某些点返回某些值。通常在不到一个小时的时间内学习并运行起来相当容易。

+0

JMock也做到这一点。 – marcospereira 2008-09-19 06:00:39

相关问题