Lan*_*opp 7 java junit mockito powermock
是否可以使用Mockito和/或PowerMockito来模拟类对象?
就像是:
Class<Runnable> mockRunnableClass = mock(Class<Runnable>.class);
Run Code Online (Sandbox Code Playgroud)
模拟类的替代方法可能是使用工厂。我知道您担心重构,但这可以在不更改类的公共 API 的情况下完成。您没有提供太多代码来理解您要测试的类,但这里有一个在不更改 API 的情况下进行重构的示例。这是一个微不足道的课程,但它可能会给你一个想法。
public class Instantiator {
public Runnable getNewInstance(Class<Runnable> runnableClass) throws Exception {
return runnableClass.newInstance();
}
}
Run Code Online (Sandbox Code Playgroud)
当然,测试这个简单的类最简单的方法是使用真正的 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);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,Instantiator 使用相同的公共 API 完全执行了之前所做的(非常简单的)操作,并且不需要该类的任何客户端执行自己的任何特殊注入。但是,如果您想模拟工厂类并注入它,那很容易做到。
| 归档时间: |
|
| 查看次数: |
14778 次 |
| 最近记录: |