Java RevitMock

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)

我的问题是模拟JGit库中的RevCommit对象。 当简单地模拟这种类型的对象并定义它的行为时,我会得到一个错误。例如:

RevCommit revCommitMock=mockRevCommit.class; Mockito.whenrevCommitMock.getShortMessage.thenReturnExampleMessage; 这将导致NullPointerException

正确执行此操作的方法可能是调用方法:

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”,您可以访问功能齐全的存储库 } }
请参见此处,以获取另一个初始化存储库并使用临时文件夹进行清理的示例:

为什么不将本地回购作为测试数据的一部分?你不必模仿任何东西。为什么不把本地回购协议作为测试数据的一部分呢?你不必嘲笑任何事。