[英]Mocking SFTP, FTP, FTPS, Local File System Server in Java
我需要在 Java 中測試 FTP/FTPS/SFTP/本地文件系統協議。
我需要一個可用於任何這些方法的模擬服務器。
我可以找到一個 MockFTPServer。 據我了解,它只能用於簡單的FTP協議,不能用於FTPS/SFTP/Local File System。
任何人都可以建議是否有任何模擬實現可用於支持 Java 中的 FTP/FTPS/SFTP/本地文件系統的服務器?
謝謝,
維傑·博爾
有假 SFTP 服務器規則。 它是 JUnit 4 的規則/庫,在測試期間運行 SFTP 服務器。 它提供了方便的方法,可幫助您將文件放到服務器上並從中獲取文件。
完全披露:我是假 SFTP 服務器規則的作者。
這些問題有點舊,但無論如何我都會發布我的答案,因為它也可能對其他人有所幫助。
我寫了一篇關於如何使用 Testcontainers 和 atmoz/sftp Docker 鏡像創建模擬 sftp 服務器的文章,它也適用於您的其他要求。
完整的例子可以在這里看到
你會像這樣用 SFTP 定義你的 TestContainer
private static final GenericContainer sftp = new GenericContainer(
new ImageFromDockerfile()
.withDockerfileFromBuilder(builder ->
builder
.from("atmoz/sftp:latest")
.run("mkdir -p /home/" + USER + "/upload; chmod -R 007 /home/" + USER)
.build()))
//.withFileSystemBind(sftpHomeDirectory.getAbsolutePath(), "/home/" + USER + REMOTE_PATH, BindMode.READ_WRITE) //uncomment to mount host directory - not required / recommended
.withExposedPorts(PORT)
.withCommand(USER + ":" + PASSWORD + ":1001:::upload");
當您需要 FTPS 服務器或任何其他協議時,您可以選擇另一個像這樣的圖像並調整容器配置。 https://hub.docker.com/r/bozorgiyan/ftps-server
至於本地文件系統,我不確定是否有任何特殊要求。 使用 JUnit 5,您可以輕松地創建一個臨時目錄,如下所示
@TempDir
File mockFileSystemDirectory;
您可以創建一個 util 類來重寫您到該目錄的路徑,如下所示:
public static File convertToFakeFileSystem(File yourFile, File fakeFileSystem) {
return new File(fakeFileSystem.getAbsolutePath() + yourFile
.getAbsolutePath()
.replaceAll("C://", "/"));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.