我想为这个类创建一个JUnit测试。复杂的Junit测试案例
什么是最好的方式去测试不同的if-else语句。
我试过一些通用的单元测试用例。
public class ObjectClaimHistory {
private List<ObjectCollaborationClaimHistory> objectClaimHistory = new ArrayList<>();
public void checkClaim(ClaimRequest claimRequest, Set<Integer> outOfDateCommits, int collaborationId, Integer parentCollaborationId, ClaimConflicts conflicts) {
Set<Integer> conflictingCollaborationClaims = new HashSet<>();
Set<Integer> conflictingCollaborationBlocks = new HashSet<>();
for (ObjectCollaborationClaimHistory collaborationClaimHistory: objectClaimHistory) {
if (!collaborationClaimHistory.checkClaim(claimRequest, outOfDateCommits)) {
conflictingCollaborationClaims.add(collaborationClaimHistory.getCollaborationId());
}
if (!collaborationClaimHistory.checkBlock(claimRequest, outOfDateCommits)) {
conflictingCollaborationBlocks.add(collaborationClaimHistory.getCollaborationId());
}
}
// After checking all histories create one commit conflict. Choose the closest collaboration.
if (conflictingCollaborationClaims.contains(collaborationId)) {
conflicts.addCommitConflict(claimRequest.getObjectId(), claimRequest.getClaim(), collaborationId);
}
else if (conflictingCollaborationBlocks.contains(collaborationId)) {
conflicts.addCommitConflict(claimRequest.getObjectId(), claimRequest.getBlock(), collaborationId);
}
我不太清楚这个测试如此复杂。你只要给它模拟版本的类(例如,总是返回false的CollabClaimHistory)并验证结果。 –
我们通常使用一些IDE并在测试类中编写一些代码。 “最佳方式”是什么意思? –