我正在与 docker 一起运行我的 DAO 单元测试,该测试会命中驻留在 docker 容器中的 SQLServer 数据库。
STEP1:我希望我将最新的 BAK 文件从我的远程服务器(安装了 docker 的 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]
似乎在容器启动之前它不会将文件刷新到类路径。有没有办法我可以在下面的行sftp.get(remoteServerFileLocation, "src/test/resources"); 被执行。以便在容器启动时它可以在类路径上使用。
在容器启动之前,它必须将 BAK 文件放入src/test/resources文件夹,以便它可以启动容器并从类路径中选择文件并运行单元测试。