Java 部分模拟父子类
我想对以下场景进行单元测试:Java 部分模拟父子类,java,easymock,Java,Easymock,我想对以下场景进行单元测试: class Base { public void doWork(Consumer<Pipe> consumer) { try { Pipeline pipeline = acquirePipeline() consumer.accept(pipeline); pipeline.sync(); } finally { unlock(); } } } class Worker
class Base {
public void doWork(Consumer<Pipe> consumer) {
try {
Pipeline pipeline = acquirePipeline()
consumer.accept(pipeline);
pipeline.sync();
} finally {
unlock();
}
}
}
class Worker extends Base {
// whatever...
}
class Service {
private Worker worker = ..
public void handle() {
worker.doWork((p) -> {
// run some code...
};
}
我已经部分模拟了Worker
,但是为了让服务中的代码正常运行,我不能模拟doWork
(我想),如果我不模拟它,那么当代码运行doWork
时,我会得到NullPointerException
,因为数据成员没有初始化
如何处理这样的情况?
< P>可以考虑使用<代码> Mockito <代码>而不是<代码> EasyMoCK < /C> > /P>
在这种情况下,有一种方法可以在模拟类上调用实方法
doCallRealMethod().when(worker).whileLocked(any(Runnable.class));
我不使用EasyMock
,我试图找到一些帮助,但找不到。使用EasyMock创建部分模拟时,可以使用partialMockBuilder
调用类的构造函数。但是我想你已经明白了。谢谢,我使用EasyMock和partialMockBuilder找到了一个类似的解决方案
class ServiceTest {
public test() throws Exception {
Worker worker = newMock(Worker.class);
worker.whileLocked(any(Runnable));
reply(worker);
Service service = new Service(worker);
service.handle();
verify(worker);
}
}