我正在研究一个个人项目,以使用Java和JavaScript创建FTP客户端。
我首先创建了使用commons-net / FTPClient的FTPController类。
这是我的代码的一个示例:
public class FtpController {
private FTPClient ftpClient;
public boolean connect() { ... //do the connection }
public boolean disconnect() { ... }
public boolean store(String localNameAndPath, String remotePath, String newFilename) { ... // it call ftpClient.storeFile(...)}
... // other methods
}
FtpController使用本地FTP服务器在Junit类中可以正常工作,但是当服务器关闭时,测试将失败。
我使用Mockito进行测试,但它始终显示Connection timeout
。
我的课堂测试是这样的:
...
@Mock
FtpController ftpController;
@InjectMocks
FTPClient ftpClient;
@BeforeEach
void setUp() {
initMocks(this);
}
@Test
void store() throws Exception {
String remotePath = "a1/";
String remoteFilename = "xyz.jpg";
String localPathOfFile = "src/test/resources/f.jpg";
boolean expected = true;
when(ftpClient.storeFile(localPathOfFile, remotePath + remoteFilename)).theReturn(true);
boolean result = ftpController.store(localPathOfFile, remotePath, remoteFilename);
assertEquals(expected, result);
}
答案 0 :(得分:0)
好的,所以第一件事是您正在测试FTPController,而不是FTPClient。
如果我对FtpController的假设是正确的,并且如果ftpClient.storeFile返回true,则返回true,那么您的测试应该在没有服务器的情况下进行。