为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Zookeepr 中模拟获取锁的 void 方法,并且我们还可以验证锁

如何在 Zookeepr 中模拟获取锁的 void 方法,并且我们还可以验证锁

GCT1015 2023-12-30 15:51:55
我必须为使用 Zookeeper 获取锁的方法创建一个单元测试用例,并使用 CompletableFuture 处理数据以下是我迄今为止尝试过的测试用例:import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.Mockito;import org.mockito.MockitoAnnotations;import org.mockito.junit.MockitoJUnitRunner;import java.util.concurrent.ExecutionException;    @RunWith(MockitoJUnitRunner.class)public class SampleJobTest {    @InjectMocks    private SampleJob sampleJob = new SampleJob();    @Mock    private ConfigurationsIntegrationService configurationsIntegrationService;    @Mock    private MessageService messageService;    @Mock    private LockingExecutorProcessor<ConfigurationsIntegrationModel> lockingExecutorProcessor;    @Test    public void testSampleJob() throws ExecutionException, InterruptedException {        Mockito.doCallRealMethod().when(lockingExecutorProcessor).process(Mockito.any(), Mockito.any(), Mockito.any());        Mockito.doCallRealMethod().when(configurationsIntegrationService).getRecords(Mockito.any());        Mockito.doCallRealMethod().when(messageService).getMessagesList(Mockito.any());        sampleJob.executeJob();    }}当我调试代码时,它会在 LockingExecutorProcessor 的 CompletableFuture.runAsync 行处中断并抛出空指针错误;原因是distributedLockProcessor对象为null;我们如何模拟它以及如何连接到测试 Zookeeper 服务器而不是原始服务器以确保锁定正常工作
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

这个做完了。现在测试用例运行良好。我使用了 curator-test 依赖项,并使用反射来模拟私有对象。



查看完整回答
反对 回复 2023-12-30
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信