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);
  }
}