Я работаю с Docker, чтобы запустить мой модульный тест DAO, который попадает в базу данных SQLServer, которая находится в контейнере Docker.
STEP1: я хочу, чтобы я извлек последнюю версию файла BAK с моего удаленного сервера (коробка Linux вкакой докер был установлен) в мой путь к классу проекта (src / test / resources), чтобы я мог использовать MSSQLServerContainer для его извлечения перед запуском контейнера.
Итак, я делаю SSHJ для извлечения файла, как показано ниже:
final SSHClient ssh = new SSHClient();
establishConnection(ssh);
SFTPClient sftp = ssh.newSFTPClient();
List<RemoteResourceInfo> files = sftp.ls("public");
for (RemoteResourceInfo file : files) {
String remoteServerFileLocation = file.getPath();
//This will download the BAK file to target folder
sftp.get(remoteServerFileLocation, "src/test/resources");
//sftp.get(remoteServerFileLocation, "target");
}
sftp.close();
ssh.disconnect();
и запускаю контейнер, как показано ниже:
xMSSQLServerContainer.withClasspathResourceMapping(BACKUP_FILE_NAME, BACKUP_FILE_PATH, BindMode.READ_ONLY).start();
, так что теперь моя проблема в том, чтосбой со следующей ошибкой:
java.lang.IllegalArgumentException: Resource with path CCS_Utility.bak could not be found on any of these classloaders: [sun.misc.Launcher$AppClassLoader@18b4aac2]
похоже, что он не сбрасывает файл в classpath, пока контейнер не запущен.Есть ли способ, которым я могу сбросить файл, как только будет выполнена следующая строка sftp.get (remoteServerFileLocation, "src / test / resources"); .чтобы он был доступен в classpath к моменту запуска контейнера.
до запуска контейнера необходимо поместить файл BAK в папку src / test / resources , чтобы он мог запускатьсяконтейнер и выберите файл из classpath и запустите модульный тест.