【发布时间】:2010-05-06 17:04:58
【问题描述】:
我正在尝试使用 EasyMock 和 TestNG 编写一些单元测试,但遇到了一个问题。鉴于以下情况:
void execute(Foo f) {
Bar b = new Bar()
b.setId(123);
f.setBar(b);
}
我正在尝试测试 Bar 的 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() 并检查它的 ID,因为 f 是一个模拟对象。有什么想法吗?这是我想要查看 EasyMock v2.5 添加的 andDelegateTo() 和 andStubDelegateTo() 的地方吗?
哦,只是为了记录……EasyMock 的文档爆了。
【问题讨论】:
-
我相信如果您创建相同的栏,它会起作用。你为什么不试试呢?
-
我的理解是,这种方法更多地依赖于 Bar.equals() 的实现,而不是我的 execute() 方法的实现。虽然我认为这可行,但似乎有更好的方法。
-
是的,您会断言传递给模拟的 bar 实例与您期望的相同。如果您的 Bar 的
equals()方法不足以满足您想要测试的内容,或者测试的字段比您在测试中关心的更多,那么捕获是一个更好的选择(尽管它提出了什么 Bar.equals( ) 是不够的)。 -
同意,但测试 Bar.equals() 不是我目前正在进行的测试的工作;-)
标签: java unit-testing easymock