使用 Mockito 和 PowerMockito 模拟类对象

2024-02-08

是否可以使用 Mockito 和/或 PowerMockito 模拟类对象?

就像是:

Class<Runnable> mockRunnableClass = mock(Class<Runnable>.class);

模拟类的替代方法可能是使用工厂。我知道您担心重构,但这可以在不更改类的公共 API 的情况下完成。您没有提供太多代码来理解您要测试的类,但这里有一个在不更改 API 的情况下进行重构的示例。这是一个微不足道的课程,但它可能会给你一个想法。

public class Instantiator {

  public Runnable getNewInstance(Class<Runnable> runnableClass) throws Exception {
    return runnableClass.newInstance();
  }
}

当然,测试这个简单的类最简单的方法是使用真正的 Runnable 类,但如果您尝试模拟该类,您就会遇到所遇到的问题。所以,你可以这样重构它:

public class PassThruFactory {
  public Object newInstance(Class<?> clazz) throws Exception {
    return clazz.newInstance();
  }
}

public class Instantiator {
  private PassThruFactory factory = new PassThruFactory();

  public Runnable getNewInstance(Class<Runnable> runnableClass) throws Exception {
    return (Runnable)factory.newInstance(runnableClass);
  }
}

现在,Instantiator 使用相同的公共 API 完全执行了之前所做的(非常简单的)操作,并且不需要该类的任何客户端执行自己的任何特殊注入。但是,如果您想模拟工厂类并注入它,那很容易做到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Mockito 和 PowerMockito 模拟类对象 的相关文章

随机推荐