1

我正在与 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文件夹,以便它可以启动容器并从类路径中选择文件并运行单元测试。

4

0 回答 0