public EtcdClient(final String url, final long ttl, final long timeout) {
        this.client = Client.builder().endpoints(url.split(",")).build();
        this.ttl = ttl;
        this.timeout = timeout;
        initLease();
    }
@Test
    public void etcdClientTest() {
        try (MockedStatic<Client> clientMockedStatic = mockStatic(Client.class)) {
            final ClientBuilder clientBuilder = mock(ClientBuilder.class);
            clientMockedStatic.when(Client::builder).thenReturn(clientBuilder);
            when(clientBuilder.endpoints(anyString())).thenReturn(clientBuilder);
            final Client client = mock(Client.class);
            when(clientBuilder.endpoints(anyString()).build()).thenReturn(client);
            final Lease lease = mock(Lease.class);
            when(client.getLeaseClient()).thenReturn(lease);
            final CompletableFuture<LeaseGrantResponse> completableFuture = mock(CompletableFuture.class);
            final LeaseGrantResponse leaseGrantResponse = mock(LeaseGrantResponse.class);

            when(client.getLeaseClient().grant(anyLong())).thenReturn(completableFuture);
            when(completableFuture.get()).thenReturn(leaseGrantResponse);
            Assertions.assertDoesNotThrow(() -> new EtcdClient("url", 60L, 3000L));

            List<StreamObserver<LeaseKeepAliveResponse>> observerList = new ArrayList<>();
            doAnswer(invocation -> {
                observerList.add(invocation.getArgument(1));
                return lease;
            }).when(lease).keepAlive(anyLong(), any());
            Assertions.assertDoesNotThrow(() -> new EtcdClient("url", 60L, 3000L));
            final LeaseKeepAliveResponse leaseKeepAliveResponse = mock(LeaseKeepAliveResponse.class);
            observerList.forEach(streamObserver -> {
                streamObserver.onCompleted();
                streamObserver.onError(new ShenyuException("test"));
                streamObserver.onNext(leaseKeepAliveResponse);
            });

            doThrow(new InterruptedException("error")).when(completableFuture).get();
            Assertions.assertDoesNotThrow(() -> new EtcdClient("url", 60L, 3000L));
        } catch (Exception e) {
            throw new ShenyuException(e.getCause());
        }
    }