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

4
我的代码需要一个接口作为输入,但只使用接口的一些方法(通常只是getter方法)。
在测试代码时,我想定义一个匿名内部类来返回测试数据。但是对于接口要求的所有其他方法,我该怎么办?
我可以使用我的IDE自动生成接口的存根,但这似乎相当冗长。
最简单的方法是如何存根我关心的两个方法而不涉及我不关心的任何方法?
5个回答

5
如果您正在使用JUnit进行测试,请使用Mocks而不是stubs。
阅读Martin Fowler的经典文章“ Mocks Aren't Stubs”。
我推荐 EasyMock框架,它使用反射自动模拟您的接口,非常好用。它比Fowler文章中的代码示例更加先进,特别是当您使用 unitils库包装EasyMock时,其语法将比文章中简单得多。此外,如果您没有接口但想要模拟一个具体类,则EasyMock有一个类扩展功能。

1

0
编写一个“适配器类”,并仅重写您关心的方法。
class MyAdapter extends MyClass {
  public void A() {
  }
  ...
}

0

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


0

EasyMock或者JMock绝对是胜者。虽然我没有使用过JMock,但是我知道用EasyMock可以根据测试脚本设置模拟对象,并在测试期间的某些情况或时间点返回特定的值。学习和运行都非常简单,通常少于一个小时就可以上手。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接