我正在使用 EasyMock 创建一些 junit 测试用例。到目前为止,我期望返回 POJO 的类是有意义的,但是我应该如何处理本身可能引发异常的 DAO 对象。我的测试用例是检查 DAO 遇到问题时抛出的预期异常。使用 EasyMock 我尝试模拟 DAO 对象(从foo类测试),处理较低级别 DAO 异常的正确方法是什么。
下面是类/简单调用的示例:(假设所有 getter/setter/constructor 都有效且存在)
public class foo{
    private daoClass dao = daoClass.getInstance();
    public String getValueFromDB(String key) throws DBException{
        return dao.lookup(key);
    }
}
public class daoClass{ //singleton DAO 
    public daoClass getInstance(){
       //singleton access here
    }
    public String lookup(String key) throws DBException{
        try{
            //DB LOGIC
        }
        catch(Exception e){
            throw new DBException(e.getMessage());
        }
    }
}
当我尝试测试这个foo类时,我希望能够测试这个 DBException。我该如何处理这个问题,我应该在 try/catch 中(在测试中)包围 DAO 调用,还是在测试中添加 throws?我知道expected=DBException如果抛出它会通过测试,但是你应该如何在语法上处理任意数量的内部异常?
测试代码示例:
@Test(expected=DBException.class)
public void testFooError(){
    String key = "test";
    String value = "expected";
    daoClass daoMock = createMock(daoClass.class);
    try{
        expect(daoMock.lookup(key)).andReturn(value);
    } catch (DBException e){
        // ???
    }
}
当expect可能引发错误时,正确的处理方法是什么?测试方法throw应该例外,还是应该try/catch使用?expected=EXCEPTION在测试中使用标签仍然正确吗?