我的代码将接口作为输入,但仅提取了几个接口的方法(通常只是getter)。
在测试代码时,我很乐意定义一个返回测试数据的匿名内部类。但是我该如何处理接口所需的所有其他方法呢?
我可以使用我的IDE为界面自动生成存根,但这看起来相当重。
将我关注的两种方法存在的最简单方法是什么,我没有采用任何方法?
答案 0 :(得分:5)
如果您使用JUnit进行测试,请使用Mocks而不是存根。
阅读Martin Fowler的开创性文章“Mocks Aren't Stubs”
我推荐EasyMock框架,它像魅力一样自动使用反射模拟你的界面。它比Fowler文章中的代码示例更先进,特别是当您使用unitils库来包装EasyMock时,语法将比文章中的语法简单得多。此外,如果您没有接口,但想要模拟具体类,则EasyMock具有类扩展。
答案 1 :(得分:1)
查看JMock。
答案 2 :(得分:0)
编写“适配器类”并仅覆盖您关心的方法。
class MyAdapter extends MyClass {
public void A() {
}
...
}
答案 3 :(得分:0)
我相信经典的方法是使用空方法创建一个抽象类。 至少,这就是Sun为MouseListener做的事情,创建MouseAdapter以便于使用这些事件。
答案 4 :(得分:0)
EasyMock或JMock绝对是赢家。我没有使用过JMock,但是我知道使用EasyMock你可以根据测试脚本设置Mock对象,它会在测试期间的某些情况或点返回某些值。它通常在不到一个小时的时间内便于学习和运行。