EasyMock:异常断言层次结构中的任何类

时间:2016-04-29 22:17:01

标签: java junit easymock

我想写一个JUnit测试断言异常。就我而言,我的期望是捕获DataAccessException。但是,DataAccessException是一个抽象类,我的代码可以抛出任何从DataAccessException扩展的具体类。

这是我的代码,使用JUnit规则:

@Rule
public final ExpectedException exception = ExpectedException.none();

@Test
public void testDelete_fail() {
    EasyMock.expect(testSubject.delete(EasyMock.anyObject()))
            .andThrow(new DataAccessException("..."));

    exception.expect(DataAccessException.class);
    testSubject.delete(id);         
}

如您所知,我无法创建抽象类的新实例。这意味着,我无法为andThrow方法填充参数。如果我尝试使用DuplicateKeyException构建,哪一个从DataAccessException扩展,我得到一个错误:

AssertionError: Expected test to throw an instance of org.springframework.dao.DataAccessException

任何想法?,我更喜欢使用EasyMock。感谢

Hierarchy of DataAccessException

1 个答案:

答案 0 :(得分:0)

一个简单的技巧是main() { int a=1, b=2, ab[]={10,20}; printf( "%d", 20 ); printf( "%d", 1 ); printf( "%d", 1 ); } 。但事实上,createNiceMock(DataAccessException.class)也可行。