gpt4 book ai didi

java - 未捕获或未抛出预期异常?

转载 作者:行者123 更新时间:2023-11-29 03:50:20 25 4
gpt4 key购买 nike

我正在测试允许连接到 FTP 服务器的功能。

这是我的一个正常工作的测试:

@Test
public void connectTestValid()
{
assetSource.setPassword("password");
assetSource.setUsername("user");
assetSource.setServerAddress("127.0.0.1");
assetSource.setServerPort(21);
connectionSuccess = false;

connectionSuccess = ftpFolderTest.connectFTP(ftpClient);
if (!connectionSuccess)
{
fail("Expected Connection success");
}
}

我想测试 connectFTP() 方法是否在 serverAddress 无效时抛出异常。

这是我的测试:

@Test(expected = Exception.class)
public void connectTestInvalidServerAddress()
{
assetSource.setPassword("password");
assetSource.setUsername("user");
assetSource.setServerAddress("1");
assetSource.setServerPort(21);
connectionSuccess = false;

connectionSuccess = ftpFolderTest.connectFTP(ftpClient);
}

这是我的功能:

protected boolean connectFTP(FTPClient ftp)
{
try
{

ftp.connect(getAssetSource().getServerAddress());

if (!ftp.login(getAssetSource().getUsername(), getAssetSource().getPassword()))
{
logger.error("Login Failed");
ftp.disconnect();
return connectionSuccess = false;
}// if

if (!FTPReply.isPositiveCompletion(ftp.getReplyCode()))
{
logger.error("Connection Failed");
ftp.disconnect();
return connectionSuccess = false;
}// if
}
catch (Exception e)
{
e.printStackTrace();
return connectionSuccess = false;
}
return connectionSuccess = true;
}

目前,测试不起作用。感谢您的帮助!

最佳答案

测试未通过的原因是它期望抛出异常,但异常在“connectFTP”方法中被捕获,然后返回 false。

当连接失败时是返回 false 还是抛出异常取决于代码的语义。根据 boolean 返回值,您似乎希望在出现异常时返回 false。在那种情况下你会想要做

org.junit.Assert.assertFalse(connectionSuccess); 

而不是在 @Test 注解中使用 (expected = Exception.class)。

关于java - 未捕获或未抛出预期异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com