【问题标题】:EasyMock: Exception asserting any class in hierarchyEasyMock:在层次结构中断言任何类的异常
【发布时间】: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 的东西。谢谢

【问题讨论】:

    标签: java junit easymock


    【解决方案1】:

    一个简单的技巧是createNiceMock(DataAccessException.class)。但事实上,new DataAccessException("...") {} 也可以。

    【讨论】:

    • 嗨,我尝试使用 EasyMock.createNiceMock(DataAccessException.class) 但我遇到了另一个错误(NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)五)。暂时解决我的问题的方法是创建一个新实例 DataIntegrityViolationException。我的关键问题是我忘记调用 EasyMock.replay。顺便说一句,谢谢你的回答
    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多