Java RevitMock
我的问题是模拟JGit库中的RevCommit对象。 当简单地模拟这种类型的对象并定义它的行为时,我会得到一个错误。例如: RevCommit revCommitMock=mockRevCommit.class; Mockito.whenrevCommitMock.getShortMessage.thenReturnExampleMessage; 这将导致NullPointerException 正确执行此操作的方法可能是调用方法:Java RevitMock,java,unit-testing,mockito,jgit,Java,Unit Testing,Mockito,Jgit,我的问题是模拟JGit库中的RevCommit对象。 当简单地模拟这种类型的对象并定义它的行为时,我会得到一个错误。例如: RevCommit revCommitMock=mockRevCommit.class; Mockito.whenrevCommitMock.getShortMessage.thenReturnExampleMessage; 这将导致NullPointerException 正确执行此操作的方法可能是调用方法: parse(RevWalk rw, byte[] raw)
parse(RevWalk rw, byte[] raw)
在RevCommit对象的实例上,但是如何正确地执行它?我得到了NullPointerException解析RevWalk类型的模拟对象。
感谢您提前提供的帮助。要避免NullPointerException,您需要完全模拟真实的RevCommit行为。为了使其在各个方面都正确,您最终将在JGit中重新构建大部分实际的RevCommit实现
这就是为什么我建议对真实的存储库运行测试。出于上述原因,通常不建议模拟您没有看到的类型
使用JGit创建测试存储库非常简单:
公共类JGitTest{
@统治
公共临时文件夹tempFolder=新临时文件夹;
私人吉特;
@以前
公共void安装程序引发GitAPIException{
git=git.init.setDirectorytempFolder.getRoot.call;
}
@之后
公共空间拆除{
git.getRepository.close;
}
@试验
公开无效测试优先{
//使用“git”,您可以访问功能齐全的存储库
}
}
请参见此处,以获取另一个初始化存储库并使用临时文件夹进行清理的示例:要避免NullPointerException,您需要完全模拟真实RevCommit的行为。为了使其在各个方面都正确,您最终将在JGit中重新构建大部分实际的RevCommit实现
这就是为什么我建议对真实的存储库运行测试。出于上述原因,通常不建议模拟您没有看到的类型
使用JGit创建测试存储库非常简单:
公共类JGitTest{
@统治
公共临时文件夹tempFolder=新临时文件夹;
私人吉特;
@以前
公共void安装程序引发GitAPIException{
git=git.init.setDirectorytempFolder.getRoot.call;
}
@之后
公共空间拆除{
git.getRepository.close;
}
@试验
公开无效测试优先{
//使用“git”,您可以访问功能齐全的存储库
}
}
请参见此处,以获取另一个初始化存储库并使用临时文件夹进行清理的示例:为什么不将本地回购作为测试数据的一部分?你不必模仿任何东西。为什么不把本地回购协议作为测试数据的一部分呢?你不必嘲笑任何事。