### Question:
ConfigUtils { public String getStringValue(Properties props, String propertyName, String defaultValue) { return expandVariables(props, propertyName, null).orElse(defaultValue); }  List<String> getNormalizedPackages(String packages); String getStringValue(Properties props, String propertyName, String defaultValue); String getStringValue2(
      Properties props, String propertyName1, String propertyName2, String defaultValue); Optional<String> getStringValue(Properties props, String propertyName); boolean getBooleanValue(Properties props, String key, boolean defaultValue); int getIntValue(Properties props, String key, int defaultValue); String getEnvVarName(String propertyName); String getSystemPropertyName(String key); List<File> getCommaSeparatedFileValues(String uriValues);  }### Answer:
@Test public void should_return_empty_when_missing_string_value() { assertThat(getStringValue(new Properties(), "key"), is(Optional.empty())); }
@Test public void should_return_empty_when_blank_string_value() { Properties props = new Properties(); props.setProperty("key", " "); assertThat(getStringValue(new Properties(), "key"), is(Optional.empty())); }
@Test public void should_getStringValue() { Properties props = new Properties(); props.setProperty("key", "value"); assertThat(getStringValue(props, "key"), is(Optional.of("value"))); }