编程语言
首页 > 编程语言> > java – 使用JMockit模拟类

java – 使用JMockit模拟类

作者:互联网

我是Mocking框架的新手.我现在正在研究的框架是JMockit.我有一个疑问.如果我对这个主题的理解很差,请原谅我.

我有一个扩展抽象类的A类.这个班是这样的:

class A extends AbstractClass{
      private B b = UtilClass.getBean("b");
      private C c = UtilClass.getBean("c");

  .........
  .........
  .........

}

UtilClass是这样的:

public final class UtilClass{
  private static UtilContext context = new UtilContext();
   //getBean method which returns a bean object
}

我想模拟getBean方法.所以要模拟这个方法,我必须模拟UtilContext类.如果它正在实例化其他类,那么我也必须嘲笑它​​.这种方式我必须模拟很多类,这不是一个好主意.请帮我.

解决方法:

如果您只需要访问UtilClass中的getBean方法,则可以使用$clinit方法模拟整个UtilClass并禁用其静态初始化(它不会禁用在编译时解析的静态初始化(常量)):

new MockUp<UtilClass>() {
    @Mock
    void $clinit() {
        //disable static initialization
    }

    @Mock
    public static SomeType getBean(String s) {
        if("b".equals(s)) return new B();
        if("c".equals(s)) return new C();
        ...
    }
};

标签:java,testing,jmockit
来源: https://codeday.me/bug/20190826/1727478.html