2011-09-23 2 views
1

EasyMock을 처음 사용했습니다. EasyMock을 사용하여 수업을 테스트해야합니다. 하지만 여기서 문제는 내 클래스에 내부 클래스가 있고이 내부 클래스가 외부 클래스의 메서드에 추가되어 일부 매개 변수를 전달하여 내부 클래스의 메서드를 호출한다는 것입니다. 이 시나리오에서 테스트 케이스를 작성하는 방법을 잘 모르겠습니다.EasyMock을 사용하여 내부 클래스 용 테스트 사례를 작성할 수 없습니다.

테스트 케이스를 작성하는 데 도움을주십시오.

도움이나 격려를 부탁드립니다.

public class ServiceClass implements ServiceInterface { 

    public void updateUSer(USer) { 
     //some logic over here. 
     sendEmailNotice(subject, vTemplate); 
    } 

    private sendEmailNotice(subject, vTemplate) { 

     MimeMessagePrepator eNotice = new PrepareEmailNotice(subject, vTemplate); 
     MailSender.send(eNotice); 
    } 

    public class PrepareEmailNotice implements MimeMessagePrepator { 
     // some local variables. 
     public PrepareEmailNotice(subject, vTemplate) { 
      subject = subject; 
      vTemplate = vTemplate; 
     } 

     public void prepare(MimeMessage message) { 
      MimeMessageHealper helper = new MimeMessageHealper(message, true); 
      // setting the mail properties like subject, to address, etc.. 
     } 
    } 

감사합니다.

+2

당신이 준 코드는 유효하지 않습니다 :

그것에 대해 좋은 비디오가있다. 당신이 여기에서 조롱하려는 것을 분명하지 않습니다 - 어떤 의존성에 관심이 있습니까? –

+0

Jon, 코드 (subject, vTemplate)에 지정된 모든 매개 변수는 문자열입니다. 내부 클래스를 조롱하는 방법과 단위 테스트에서 내부 클래스 메서드를 처리하는 방법을 찾는 해결책을 찾고 있습니다. – Sagar

+0

'MimeMessageHealper'와 같이 내부 클래스가 사용하는 클래스가 아닌 내부 클래스를 조롱해야합니까? 의존성을 실제로 원한다고 생각해보십시오. 일단 작업을했으면 그 의존성을 조롱해야합니다. –

답변

1

먼저 무엇이 클래스 책임인지 생각해야합니다. 누가 말을해야합니까?

종속성을 명확히 확인한 후에는 코드에서이를 처리 할 수있는 방법을 확인해야합니다. 종속성 반전 원리를 준수하기 위해 일부 리팩토링을 수행해야 할 수도 있습니다. 예를 들어 여기서 MailSender 클래스에 대한 종속성이 있지만이 종속성이 "하드 코딩 됨"이므로 모의 할 수 없습니다. 당신의 매개 변수 중 일부에 대한 당신이 지정하지 않은 유형 - http://www.youtube.com/watch?v=XcT4yYu_TTs

관련 문제