JMockit을 사용하여 개인 메서드를 조롱하려고합니다. 튜토리얼을 통해 작업 해 왔으며 값을 반환하지 않는 개인 메서드를 조롱 할 수 있습니다. 이 특정 메서드는 데이터베이스와 상호 작용하며 아무 것도 반환하지 않습니다. 이 테스트의 목적 상,이 메소드를 효과적으로 마스크하는 것입니다. 사용하고있는 테스트 형식은 아래에 나와 있습니다. 일반적으로 캡슐화 해제 메소드가 호출 된 직후에 결과가 나타납니다.JMockit, 반환하지 않고 private 메서드를 조롱하려면 어떻게해야합니까?
@Test
public void testRetrieveAndSaveReport() {
//Make class with private class final, to be used in the Exceptionsinners class
final ESReportOutputLogic eSReportOutputLogic = new ESReportOutputLogic();
// Define Expectations
// pass eSReportOutputLogic as argument to make it a Mocked type in the Exceptions Class
new Expectations(eSReportOutputLogic){
ESReportOutputLogic eSReportOutputLogic;
{
Deepcapsulation.invoke(eSReportOutputLogic);
}
};
ESReportOutputLogic rol = new ESReportOutputLogic();
rol.retrieveAndSaveReport("","",1);
// asserts.....
}
개인적인 방법이므로 일부 값을 반환하는 메서드의 서명을 변경할 수 없습니까? 이 경우 데이터베이스 작업이 성공하면 0을 반환하고 그렇지 않으면 1을 반환합니다. 호출 메서드에 대한 작업 결과를 전달하지 않는 개인 메서드는 생각하기가 어렵습니다. 반환 값 또는 예외 예외가 될 수 있습니다. – Gaurav