在测试代码时,我不熟悉mockito/powermockito(因为它是一个静态方法)。我无法为这个方法编写测试,因为它包含文件列表和jgit方法,有人能告诉我如何为这个特殊的方法执行测试吗。
public static String addAndCommitUntrackedChanges(final File gitFile, final String branchName,
final String commitMessage, List<String> filesList)
throws IOException, GitAPIException {
final Git openedRepo = Git.open(gitFile);
openedRepo.checkout().setCreateBranch(true).setName(branchName).call();
AddCommand add = openedRepo.add();
for (final String file: filesList) {
Path filepath = Paths.get(file); //file absolute Path
final Path repoBasePath = Paths.get("/", "tmp", "PackageName"); //file base common path
final Path relative = repoBasePath.relativize(filepath); //Remove the repoBasePath from filpath
add.addFilepattern(relative.toString());
}
add.call();
// Create a new commit.
RevCommit commit = openedRepo.commit()
.setMessage(commitMessage)
.call();
//Return the Latest Commit_Id
return ObjectId.toString(commit.getId());
}
提前谢谢!
1条答案
按热度按时间ssm49v7z1#
您应该避免使用静态方法。您将如何测试的客户
addAndCommitUntrackedChanges
如果你不能嘲笑它?使
addAndCommitUntrackedChanges
更易于测试的是,引入gitwrapper接口:通过实施:
并将方法的签名更改为:
和使用
GitWrapper
而不是的静态示例Git
.然后,您可以模拟编写单元测试时需要模拟的内容。