我正在使用 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
在测试中使用标签仍然正确吗?