【发布时间】:2016-05-02 07:25:03
【问题描述】:
我想编写一个 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 方法填写参数。如果我尝试使用从 DataAccessException 扩展而来的 DuplicateKeyException 进行构建,则会出现错误:
AssertionError: Expected test to throw an instance of org.springframework.dao.DataAccessException
有什么想法吗?我更喜欢使用 EasyMock 的东西。谢谢
【问题讨论】: