Issue
I am updating a few tests. The Before gets the sftp session. For this, the username and password have been hardcoded in the properties file. Due to security reasons, the password cannot be checked in and has to be blanked out. However the unit test fails at
private DefaultSftpSessionFactory sftpClientFactory;
private SftpSession sftpSession;
@Before
public void setup() {
sftpSession = sftpClientFactory.getSession();
}
This step fails with "either a password or private key is required".I would like to get a mock session, so that I dont have to provide a password.
Solution
Regarding the unanswered/able question What's the best mock framework for Java?, a Mockito approach would be:
Get the needed libraries into your (test) class path. (https://mvnrepository.com/artifact/org.mockito)
Mock the SftpSession. (Via annotation
private @Mock SftpSession sftpSession;
...plus the according initialization/enablement, or (manually) viasftpSession = Mockito.mock(SftpSession.class);
)a. See, whether the SessionFactory is needed (for test) at all, if so also mock.
Mock/verify/reset any interactions (within your tests) with the mocked objects. (Like
Mockito.when(sftpSession.foo(x,y,z)).then...
orMockito.verify(sftpSession, Mockito.times(n)).foo(x,y,z);
)
Further reading:
Answered By - xerx593
Answer Checked By - Dawn Plyler (JavaFixing Volunteer)