我试图用EasyMock和TestNG编写一些单元测试,并且遇到了问题。鉴于以下几点:使用EasyMock测试参数值
void execute(Foo f) {
Bar b = new Bar()
b.setId(123);
f.setBar(b);
}
我试图测试该栏的ID获取以下列方式进行相应的设置:
@Test
void test_execute() {
Foo f = EasyMock.createMock(Foo.class);
execute(f);
Bar b = ?; // not sure what to do here
f.setBar(b);
f.expectLastCall();
}
在我的测试,我不能就这么叫f.getBar()
和检查它是否是因为f
是模拟对象。有什么想法吗?这是我想看看EasyMock v2.5增加andDelegateTo()
和andStubDelegateTo()
?
哦,只是为了记录... EasyMock的文档打击。
我相信如果你创建的是同样的酒吧,它会工作。你为什么不尝试? – 2010-05-06 17:08:09
我的理解是,这种方法更依赖Bar.equals()的实现,而不是执行我的execute()方法。虽然我认为这会奏效,但似乎还有更好的办法。 – fmpdmb 2010-05-06 17:17:48
是的,你会断言传递给模拟的酒吧实例等于你所期望的。如果你的Bar的'equals()'方法不足以满足你想要测试的内容,或者在你的测试中测试比你关心的更多的字段,那么捕获是一个更好的选择(尽管它提出了什么Bar的问题。等于()是不够的)。 – 2010-05-06 17:39:35