Java Easymock期望异常?
我有下面的方法Java Easymock期望异常?,java,junit,easymock,Java,Junit,Easymock,我有下面的方法 public String getMsg(String name){ //get data from database if db returned value is null then throw exception. if(returnValue == null){ throw new CustomException("No results"); } return returnValue; } 我需要编写一个测试预期异常场景,如下所示。如何编写?
public String getMsg(String name){
//get data from database
if db returned value is null then throw exception.
if(returnValue == null){
throw new CustomException("No results");
}
return returnValue;
}
我需要编写一个测试预期异常场景,如下所示。如何编写?您模拟数据库连接,并编写两个测试用例。一种是告诉模拟连接返回null,在这种情况下会出现异常(@Test(expect=CustomException.class)),另一种是模拟连接返回虚拟结果,并且测试不会失败,因为没有异常 另一方面,我认为在DAO中包含验证逻辑打破了单一责任原则。我认为底层数据库连接应该抛出异常,或者您应该分离验证逻辑并将其放入void validate(?toValidate)方法中,如果参数无效,该方法应该抛出异常。如果
String getMsg(String name)
是接口方法,则:
public interface IMsgDAO
{
// ...
String getMsg(String name);
// ...
}
在犹他州
IMsgDAO dao = EasyMock.createMock(IMsgDAO.class);
EasyMock.expect(dao.getMsg((String) EasyMock.anyObject())
.andThrow(new CustomException()) // <---
.anyTimes();
IMsgDAO=EasyMock.createMock(IMsgDAO.class);
expect(dao.getMsg((字符串)EasyMock.anyObject())
.anthrow(新的CustomException())//您想测试此DAO方法还是使用此方法的类?我想测试使用此DAO的类。我想在服务类中模拟此DAO。嗨,Daniel,我想模拟DAO并测试使用此DAO方法的服务方法。然后是重点。另一方面,您不一定需要接口来模拟对象,但是有两个问题:你不能模拟静态或最终,在模拟行为定义中使用匹配器时要注意:你不能混合使用匹配器和常规参数。此外,你还需要在行为定义(录制阶段)和测试之间进行“重播(…)”。