2011-09-23 72 views
1

我是EasyMock的新手。我需要使用EasyMock測試我的課程。但是這裏的問題是我的類有內部類,而這個內部類是在外部類的方法中實現的,並通過傳遞一些參數來調用內部類的方法。我不知道如何編寫測試案例。無法使用EasyMock編寫內部類的測試用例

請幫我寫這個測試用例。

任何幫助或suggetions高度讚賞。

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

相關問題