在Java中存根复杂接口的最简单方法是什么?

时间:2008-09-18 16:22:13

标签: java testing

我的代码将接口作为输入,但仅提取了几个接口的方法(通常只是getter)。

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

我可以使用我的IDE为界面自动生成存根,但这看起来相当重。

将我关注的两种方法存在的最简单方法是什么,我没有采用任何方法?

5 个答案:

答案 0 :(得分:5)

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

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

我推荐EasyMock框架,它像魅力一样自动使用反射模拟你的界面。它比Fowler文章中的代码示例更先进,特别是当您使用unitils库来包装EasyMock时,语法将比文章中的语法简单得多。此外,如果您没有接口,但想要模拟具体类,则EasyMock具有类扩展。

答案 1 :(得分:1)

查看JMock。

http://www.jmock.org/

答案 2 :(得分:0)

编写“适配器类”并仅覆盖您关心的方法。

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

答案 3 :(得分:0)

我相信经典的方法是使用空方法创建一个抽象类。 至少,这就是Sun为MouseListener做的事情,创建MouseAdapter以便于使用这些事件。

答案 4 :(得分:0)

EasyMock或JMock绝对是赢家。我没有使用过JMock,但是我知道使用EasyMock你可以根据测试脚本设置Mock对象,它会在测试期间的某些情况或点返回某些值。它通常在不到一个小时的时间内便于学习和运行。