我使用EasyMock和EasyMock CE 3.0来模拟依赖层并测试我的类。以下是我无法找到任何解决方案的情景
我有要测试的类,它调用依赖类 void方法,该方法接受输入参数,并改变相同的参数。我正在测试的方法是基于改变的param做一些操作,我现在必须测试各种场景
考虑下面的示例,我试图将相同的场景放在
中public boolean voidCalling(){
boolean status = false;
SampleMainBean mainBean = new SampleMainBean();
dependentMain.voidCalled(mainBean);
if(mainBean.getName() != null){
status = true;
}else{
status = false;
}
return status;
}
依赖主要类以下方法
public void voidCalled(SampleMainBean mainBean){
mainBean.setName("Sathiesh");
}
要完全覆盖,我需要有2个测试用例来测试返回true和false的场景,但是我总是得到假,因为我无法设置void方法的行为来改变这个输入bean 。如何使用EasyMock
在此场景中获得真实结果提前感谢您的帮助。
答案 0 :(得分:6)
从这个答案中的答案开始:EasyMock: Void Methods,您可以使用IAnswer。
// create the mock object
DependentMain dependentMain = EasyMock.createMock(DependentMain.class);
// register the expected method
dependentMain.voidCalled(mainBean);
// register the expectation settings: this will set the name
// on the SampleMainBean instance passed to voidCalled
EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() {
@Override
public Object answer() throws Throwable {
((SampleMainBean) EasyMock.getCurrentArguments()[0])
.setName("Sathiesh");
return null; // required to be null for a void method
}
});
// rest of test here
答案 1 :(得分:2)
感谢您的回复..我解决了问题...... :) 感谢您提供示例代码。
使用上面的代码片段,我必须做的一件事是,
// register the expected method
dependentMain.voidCalled((SampleMainBean) EasyMock.anyObject());
这样就可以在要测试的方法中获得更新的bean。
再次感谢您的帮助。