Java JUnit测试不断获取空点异常
我正在尝试为我的应用程序创建JUnit测试,但我不断得到Java JUnit测试不断获取空点异常,java,junit,nullpointerexception,Java,Junit,Nullpointerexception,我正在尝试为我的应用程序创建JUnit测试,但我不断得到NullPointerException。 我的方法是建立一个基于密钥的auth-SFTP连接,所有这些SFTP???和als???字符串都是从我的另一个类中获取的,在这个类中,我通过@Value从应用程序.properties获取值 这就是我要测试的类和方法 import static mypackage.static.alsFunctionId; // Some more static imports here... @Compone
NullPointerException
。
我的方法是建立一个基于密钥的auth-SFTP连接,所有这些SFTP???
和als???
字符串都是从我的另一个类中获取的,在这个类中,我通过@Value
从应用程序.properties
获取值
这就是我要测试的类和方法
import static mypackage.static.alsFunctionId;
// Some more static imports here...
@Component
public class SftpConnection {
private Logging logger;
@Autowired
public SftpConnection(Logging logger) {
this.logger = logger;
}
public Session MakeConnectionByKey () {
try {
JSch jsch = new JSch();
Session session = null;
jsch.addIdentity(sftpPrivateKeyPath);
session = jsch.getSession(sftpUsername, sftpHostname, sftpPort);
session.setConfig(
"StrictHostKeyChecking", "no"
);
session.setConfig(
"PreferredAuthentications",
"publickey,keyboard-interactive,password");
session.connect();
if(session.isConnected()) {
return session;
} else {
System.out.println("NOT Connected!");
}
} catch (JSchException e) {
logger.WriteLog(alsPlatform, "INFO", alsProjectCode, alsFunctionId, alsTransactionId, alsOperationId, "SFTP_CONNECTION", e.getClass().getCanonicalName() + ": " + e.getMessage());
//System.err.println(e);
//return null;
}
return null;
}
}
这是测试方法
private Session session;
private SftpConnection sftpConnection;
private Logging logger;
@Before
void setUp() throws Exception {
logger = new Logging();
sftpConnection = new SftpConnection(logger);
session = null;
}
@Test
public void shouldGetSession() throws JSchException {
session = sftpConnection.MakeConnectionByKey2();
assertThat(session.isConnected()).isTrue();
}
有人知道
NullPointerException
来自哪里吗?我试图用实际字符串值替换所有这些字符串变量,但仍然没有成功。会话可能为空,您能否发布控制台输出异常堆栈跟踪将告诉您异常发生在哪个类的哪一行。由此,您应该能够计算出哪个变量意外为空。这些信息应该能帮助你解决问题。但是从您在这里展示的内容来看,没有足够的信息告诉您发生了什么。在测试用例中,您正在调用MakeConnectionByKey2()方法,而在上面的代码中定义了MakeConnectionByKey()。NPE可能来自任何地方,在我看来,如果会话未连接,上述方法(MakeConnectionByKey())将返回null。当测试用例正在查看session.isConnected()时,由于session为Null,它将以Null指针异常结束。谢谢大家。从故障跟踪(我正在使用STS)中,我看到它正在报告session=sftpConnection.MakeConnectionByKey()
得到了一个空指针,但我不能确定是什么导致了这种情况@ThilinaRubasingha我在控制台上根本看不到任何东西@SwaritAgarwal是的,这是因为我试图隔离那些导入静态字符串变量,并创建了MakeConnectionByKey2()
进行测试。但是你是对的,两者都不起作用。因此,如果发生任何其他异常,它将不会显示在控制台输出中。尝试添加另一个catch块和catch(异常e)主类。这将显示异常跟踪。根据当前的实现,当发生JSchException以外的异常时,MakeConnectionByKey()返回null会话。