2011-09-23 39 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

相关问题