### Question:
BuildInfoProperties { public static BuildInfoProperties from(Properties properties) { return ImmutableBuildInfoProperties.builder() .gdsVersion(properties.getProperty("Implementation-Version")) .buildDate(properties.getProperty("Build-Date", "unknown")) .buildJdk(properties.getProperty("Created-By", "unknown")) .buildJavaVersion(properties.getProperty("Build-Java-Version", "unknown")) .buildHash(properties.getProperty("Full-Change", "unknown")) .minimumRequiredJavaVersion(properties.getProperty("X-Compile-Target-JDK", "unknown")) .build(); }  abstract String gdsVersion(); abstract String buildDate(); abstract String buildJdk(); abstract String buildJavaVersion(); abstract String buildHash(); abstract String minimumRequiredJavaVersion(); static BuildInfoProperties from(Properties properties); static BuildInfoProperties get(); static BuildInfoProperties require();  }### Answer:
@Test void loadFromPropertiesRequiresVersion() { var properties = new Properties(); var exception = assertThrows( NullPointerException.class, () -> BuildInfoProperties.from(properties) ); assertThat(exception).hasMessage("gdsVersion"); }