Я хотел бы написать тест JUnit, утверждающий исключение. В моем случае, мое ожидание ловит DataAccessException. Однако DataAccessException является абстрактным классом, и мой код может генерировать любой конкретный класс, который распространяется на DataAccessException.EasyMock: исключение, утверждающее любой класс в иерархии
Это мой код, используя правило 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. Благодаря
Привет, я пробовал использовать EasyMock.createNiceMock (DataAccessException.class), но я получил еще одну ошибку (NoSuchMethodError: org.hamcrest.Matcher.describeMismatch (Ljava/lang/Object; Lorg/hamcrest/Description;) V). То, что временно устранило мою проблему, было создание нового экземпляра DataIntegrityViolationException. Моя ключевая проблема заключалась в том, что я забыл называть EasyMock.replay. Кстати, спасибо за ваш ответ – jmgoyesc