Я пишу тестовые примеры Junit для уровня данных, используя базу данных inmemory. Я указал имя схемы в запросе SQL, который мне нужно сделать динамическим c. Это означает, что пока я запускаю Junit, он должен иметь имя схемы Junit c. В настоящее время имя схемы считывается из файла свойств из папки ресурсов с использованием метода DatabaseUtil.getSchema("MYSCHEMA")
. Я хочу, чтобы файл свойств для выполнения Junit был из ресурса тестового пакета. Я считаю, что это типичный пример использования. Но я пока не видел никакого способа добиться этого после одного дня поиска в inte rnet. Кто-нибудь, пожалуйста, предложите какой-нибудь подход или идею.
public List<String> getPoints(Long Id) throws SQLException{
String query ="SELECT p.NAME "
+ "FROM {schema}.POINTS as p "
+ "WHERE p._ID = ? "
String queryWithSchema = query.replace("{schema}", DatabaseUtil.getSchema("MYSCHEMA"));
ResultSet resultSet = null;
List<String> result = Lists.newArrayList();
try (Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(queryWithSchema)) {
preparedStatement.setLong(1,latestRunId);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
result.add(resultSet.getString("NAME"));
}
} catch (SQLException ex) {
LOGGER.error("error during getPoints", ex);
throw ex;
} finally {
if(resultSet != null) {
resultSet.close();
}
}
return result;
}