我想为JGit代码编写一个JUnit测试。在这段代码中,我使用JGit创建了本地文件和存储库。
我已经使用wiremock为我的方法的其余部分编写了JUnit测试,但是我对以下代码感到异常。
git.push().setCredentialsProvider(new UsernamePasswordCredentialsProvider(PortalConstants.USERNAME, PortalConstants.PASSWORD)).call();
git.close();
我收到此异常
org.eclipse.jgit.api.errors.JGitInternalException: Exception caught during execution of push command
at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:183)
有没有办法可以模拟push命令,因为我只想在我的本地执行它。
答案 0 :(得分:0)
您可以为JGit创建一个额外的界面并模拟它。
public class JGitTest {
interface JGit {
void push();
void close();
}
private static class MyCustomService {
private final JGit jGit;
private MyCustomService(JGit jGit) {
this.jGit = jGit;
}
public void execute() {
jGit.push();
}
}
private static class JGitProductionImpl implements JGit {
@Override
public void push() {
//git().push();
}
@Override
public void close() {
//git().close();
}
}
@Test
public void jgitTest() {
JGit jGitMock = Mockito.mock(JGit.class);
MyCustomService myCustomService = new MyCustomService(jGitMock);
myCustomService.execute();
Mockito.verify(jGitMock, Mockito.times(1)).push();
}
}