如何创建一个"FTPS"模拟服务器来单元测试Java中的文件传输

Jyo*_*jan 4 java junit ftps mocking

我有一个CreateFTPConnection类,它创建一个FTPS连接.使用此连接,传输文件.这是TransferFile类的代码

public class TransferFile
{
   private CreateFTPConnection ftpConnection;
   private FTPSClient client;

public TransferFile(CreateFTPConnection ftpConnection) {
    this.ftpConnection = ftpConnection;
    this.client = ftpConnection.getClient();
}

public void transfer(Message<?> msg)
{
    InputStream inputStream = null;
    try
    {
        if(!client.isConnected()){
            ftpConnection.init();
            client = ftpConnection.getClient();
        }
        File file = (File) msg.getPayload();
        inputStream = new FileInputStream(file);
        client.storeFile(file.getName(), inputStream);
        client.sendNoOp();
    } catch (Exception e) {
        try
        {
            client.disconnect();
        }
        catch (IOException e1) {
            e1.printStackTrace();
        }
    }
    finally
    {
        try {
            inputStream.close();
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我必须为这个类编写jUnit Testcase.为此,我必须创建一个FTPS Mock Server连接,并且必须使用该连接来测试文件传输.那么任何人都可以给我任何关于如何制作FTPS模拟服务器并做测试用例的想法.我搜索了这个,但我得到的是FTP或SFTP,而不是FTPS.请帮我.

Mik*_*ike 6

您可能会发现这个有用的MockFTPServer

问题是这些模拟服务器没有实现我所看到的TLS部分.您可能需要做一些工作以允许通过TLS进行连接.

为了您的测试,您应该能够在这里搜索并找到一些关于处理证书的文章(或者在某些情况下绕过它们).

这是另一篇介绍创建基本FTP服务器测试步骤的文章.

没有一个完整的FTP服务器(Apache http w/mod_ftp添加),似乎没有任何有用的做到这一点.