Java 验证完成后,EasyMock在tearDown方法中验证对mock的调用
我在EasyMock测试中看到了我不理解的不一致行为 我的第一次考试通过了Java 验证完成后,EasyMock在tearDown方法中验证对mock的调用,java,unit-testing,testing,junit,easymock,Java,Unit Testing,Testing,Junit,Easymock,我在EasyMock测试中看到了我不理解的不一致行为 我的第一次考试通过了 public class MockATest { private final AtomicLong aMock = createStrictMock(AtomicLong.class); @Before public void setUp() { aMock.set(101L); } @After public void tearDown() { aMoc
public class MockATest {
private final AtomicLong aMock = createStrictMock(AtomicLong.class);
@Before
public void setUp() {
aMock.set(101L);
}
@After
public void tearDown() {
aMock.set(999L);
}
@Test
public void testA() {
reset(aMock);
replay(aMock);
// TODO : test stuff here
verify(aMock);
}
}
。。但是我的第二次测试失败了
public class MockBTest {
private final List<Long> bMock = createStrictMock(List.class);
@Before
public void setUp() {
bMock.add(101L);
}
@After
public void tearDown() {
bMock.add(999L);
}
@Test
public void testB() {
reset(bMock);
replay(bMock);
// TODO : test stuff here
verify(bMock);
}
}
公共类MockBTest{
私有最终列表bMock=createStrictMock(List.class);
@以前
公共作废设置(){
b添加(101L);
}
@之后
公共无效拆卸(){
b库存添加量(999L);
}
@试验
公共无效测试b(){
重置(bMock);
重播(bMock);
//TODO:在这里测试
验证(bMock);
}
}
失败的原因是
意外的方法调用列表。添加(999)
我有两个问题真的
AtomicLong.set
被键入void AtomicLong.set(long)
,所以它是一个void方法。录音很好。但是,List.add
是键入的booleanlist.add(E)
,因此它不是一个void方法。记录非void方法的正确方法是执行expect(list.add(101L)).andReturn(true)
testB()
。EasyMock在调用setUp()
中的bMock.add(101L)
时抛出一个错误,因此它直接进入tearDown
,该过程也会失败,并隐藏到setUp()
的异常中
AtomicLong.set
被键入void AtomicLong.set(long)
,所以它是一个void方法。录音很好。但是,List.add
是键入的booleanlist.add(E)
,因此它不是一个void方法。记录非void方法的正确方法是执行expect(list.add(101L)).andReturn(true)
因为它从不进入
testB()
。EasyMock在调用setUp()
中的bMock.add(101L)
时抛出一个错误,因此它会直接转到拆卸
,该拆卸也会失败,并隐藏到setUp()
Doh的异常中-当然!谢谢亨利看到了显而易见的事实。当然!谢谢亨利看到了显而易见的事实。