【发布时间】:2012-02-24 02:35:31
【问题描述】:
我的单元测试包含对我的 DAO 的“严格”模拟。除了下面的 @Test 之外,我的嘲笑行为对所有测试都很常见。因此,我在 @Before 方法中添加了这种常见的模拟行为。然后将专家模拟行为添加到 @Test 本身:
@Before
public void setUp() {
reset(myDAO);
expect(myDAO.findMyObjects(code, myID)).andReturn(myObjects).times(1);
expect(myDAO.findMyObjects(myID)).andReturn(myObjects).times(1);
replay(myDAO);
}
@Test
public void testMyFirstMethod() {
reset(myDAO);
expect(myDAO.findMyObjects(myID)).andReturn(new ArrayList<MyObject>()).times(200);
replay(myDAO);
Set<OtherObject> otherObjects = myTestClass.myTestMethod(null, myID);
assertEquals("Empty set is returned", 0, otherObjects.size());
}
我已检查 .times(1) 行为在我的其他单元测试中得到验证。但是,在上面的测试中, .times(200) 行为没有得到验证(因为我的单元测试只调用了一次)。 这是为什么呢?
【问题讨论】: