### Question:
HttpClient implements LifeCycle { @Override public void start() { if (isStarted()) { return; } if (asyncResponseConsumerFactory instanceof LifeCycle) { ((LifeCycle)asyncResponseConsumerFactory).start(); } asyncClient.start(); state = State.STARTED; } HttpClient(
            CloseableHttpAsyncClient asyncClient,
            ServerPool serverPool,
            RequestFactory requestFactory,
            HttpAsyncResponseConsumerFactory asyncResponseConsumerFactory
    ); T execute(
            Request clientRequest,
            BlockingResponseHandler<T> responseHandler
    ); void executeAsync(
            final Request request,
            final ResponseHandler<T> responseHandler,
            final HttpClientContext httpClientContext
    ); void executeAsync(
            final Request request,
            final ResponseHandler<T> responseHandler
    ); CloseableHttpAsyncClient getAsyncClient(); @Override void start(); @Override void stop(); @Override boolean isStarted(); @Override boolean isStopped();  }### Answer:
@Test public void lifecycleStartStartsPoolOnlyOnce() { PoolingAsyncResponseConsumerFactory asyncResponseConsumerFactory = mock(PoolingAsyncResponseConsumerFactory.class); HttpClient httpClient = createTestHttpClient( mock(CloseableHttpAsyncClient.class), mock(ServerPool.class), mock(RequestFactory.class), asyncResponseConsumerFactory); httpClient.start(); httpClient.start(); verify(asyncResponseConsumerFactory, times(1)).start(); }