### Question:
ZookeeperDynamicConfiguration implements DynamicConfiguration { @Override public String getConfig(String key, String group, long timeout) throws IllegalStateException { if (StringUtils.isNotEmpty(group)) { key = group + "/" + key; } else { int i = key.lastIndexOf("."); key = key.substring(0, i) + "/" + key.substring(i + 1); } return (String) getInternalProperty(rootPath + "/" + key); } ZookeeperDynamicConfiguration(URL url); @Override Object getInternalProperty(String key); @Override void addListener(String key, String group, ConfigurationListener listener); @Override void removeListener(String key, String group, ConfigurationListener listener); @Override String getConfig(String key, String group, long timeout);  }### Answer:
@Test public void testGetConfig() throws Exception { Assertions.assertEquals("Never change value from configurators", configuration.getConfig("never.change.DemoService.configurators")); Assertions.assertEquals("The content from dubbo.properties", configuration.getConfig("dubbo.properties", "dubbo")); }