【问题标题】:How to mock static void methods using EasyMock only?如何仅使用 EasyMock 模拟静态 void 方法?
【发布时间】:2019-11-19 05:06:22
【问题描述】:

我想使用 EasyMock 在我的 TestB.java 类中模拟 A.notNull(obj) 方法。一周以来,我一直在努力模拟这种方法。

//A.class
public class A
{
    public static void notNull(Object o)
    {
       notNull(o,"object is null");
    }
    public static void notNull(Object o, String s)
    { 
       if (o==null)
       {
           throw new IllegalArgumentException(s);   
       }
    }
 }

 //B.class
 Class<? extends E> obj;

 protected final Simple limit()
 {
     A.notNull(obj); //I want to mock this line in my TestB.java class using EasyMock framework
 }

我们将不胜感激。

【问题讨论】:

  • Easy mock不支持Static mocking,需要powermock和easymock配合使用。
  • 感谢您的宝贵回复,但我与 EasyMock 框架绑定。请建议使用 EasyMock 本身的任何其他方式。
  • 这是内部实现细节,可以通过内联空检查来合理地替换。不要嘲笑它;相反,请确认B 在呈现null 时正确执行。
  • 不是一个好的解决方案,但仍然在某些地方使用stackoverflow.com/a/12193017/4762502
  • B 类正确执行空检查。它在 obj 字段中给出类名。

标签: java methods static void easymock


【解决方案1】:

事实上,EasyMock 不支持模拟静态方法。为此,您需要在其上添加 PowerMock。

但是,就你而言,我确实不会嘲笑 notNull。它不做任何需要嘲笑的事情。你甚至不需要这个方法,因为Objects.requireNotNull 做同样的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 2016-12-05
    相关资源
    最近更新 更多