public void watchDataChange(final String key,
                                final BiConsumer<String, String> updateHandler,
                                final Consumer<String> deleteHandler) {
        Watch.Listener listener = watch(updateHandler, deleteHandler);
        if (!watchCache.containsKey(key)) {
            Watch.Watcher watch = client.getWatchClient().watch(ByteSequence.from(key, UTF_8), listener);
            watchCache.put(key, watch);
        }
    }
@Test
    public void testWatchDataChange() {
        BiConsumer<String, String> updateHandler = mock(BiConsumer.class);
        Consumer<String> deleteHandler = mock(Consumer.class);
        etcdClient.watchDataChange(WATCH_DATA_CHANGE_KEY, updateHandler, deleteHandler);
        etcdClient.watchClose(WATCH_DATA_CHANGE_KEY);
        etcdClient.watchClose("not hit");
        verify(watcher).close();
    }