【问题标题】:Not able to write the testcases for inner class using EasyMock无法使用 EasyMock 为内部类编写测试用例
【发布时间】:2011-09-23 05:53:22
【问题描述】:

我是 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..
        }
    }

谢谢。

【问题讨论】:

  • 您提供的代码无效 - 您没有为某些参数指定类型。也不清楚你想在这里模拟什么——你对什么依赖感兴趣?
  • Jon,代码中指定的所有参数(主题,vTemplate)都是字符串。我正在寻找解决方案,例如如何模拟内部类以及如何在单元测试中覆盖该内部类方法。
  • 您确定需要模拟内部类而不是内部类使用的东西(例如MimeMessageHealper)吗?想想你真正希望依赖是什么——一旦你解决了这个问题,你应该模拟出那些依赖。
  • 我在这里给这个类留下了一个可能的测试:stackoverflow.com/questions/7510453/…

标签: java unit-testing junit easymock


【解决方案1】:

首先,您需要考虑什么是类责任。 它应该和谁说话?

一旦您清楚地确定了依赖关系,您就需要了解如何在代码中处理它们。 您可能需要执行一些重构以符合依赖倒置原则。 例如,这里你有一个 MailSender 类的依赖,但你不能模拟它,因为这个依赖是“硬编码的”。

有一个很好的视频:http://www.youtube.com/watch?v=XcT4yYu_TTs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多