### Question:
PropertiesHolder implements IHasProperties { @Override public Set<String> getPropertyKeys() { return properties.keySet(); } PropertiesHolder(); @Override Object getProperty( String key ); String getPropertyAsString( String key ); @Override void setProperty( String key, Object value ); @Override Object removeProperty( String key ); @Override Set<String> getPropertyKeys(); @Override Map<String, Object> getProperties(); @Override void setProperties( Map<String, Object> props ); @Override void removeProperties( Set<String> keys ); @Override void clearProperties(); @Override boolean containsKey( String key ); @Override boolean isDirty(); @Override void setDirty( boolean dirty ); @Override String toString();  }### Answer:
@Test public void testGetPropertyKeys() throws Exception { props.setProperty( "a", 1 ); props.setProperty( "b", 2 ); Set<String> keys = props.getPropertyKeys(); assertNotNull( keys ); assertEquals( keys.size(), 2 ); assertTrue( keys.contains( "a" ) ); assertTrue( keys.contains( "b" ) ); }